Refactor source files into separate libraries

This gives me more control over what gets linked to what. It also solves
some linking issues.

Change-Id: Ifc6d5c8c7dd0931ba72b498ad0be592940e5fc59
diff --git a/src/ast_values.cpp b/src/ast_values.cpp
new file mode 100644
index 0000000..b8ca68d
--- /dev/null
+++ b/src/ast_values.cpp
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2019 CESNET, https://photonics.cesnet.cz/
+ *
+ * Written by Václav Kubernát <kubervac@fit.cvut.cz>
+ *
+*/
+#include "ast_values.hpp"
+
+enum_::enum_() = default;
+
+enum_::enum_(const std::string& value)
+    : m_value(value)
+{
+}
+
+identityRef_::identityRef_() = default;
+
+identityRef_::identityRef_(const std::string& value)
+    : m_value(value)
+{
+}
+
+identityRef_::identityRef_(const std::string& module, const std::string& value)
+    : m_prefix(module_{module})
+    , m_value(value)
+{
+}
+
+binary_::binary_() = default;
+
+binary_::binary_(const std::string& value)
+    : m_value(value)
+{
+}
+
+bool identityRef_::operator==(const identityRef_& b) const
+{
+    return this->m_prefix == b.m_prefix && this->m_value == b.m_value;
+}
+
+bool binary_::operator==(const binary_& b) const
+{
+    return this->m_value == b.m_value;
+}
+
+bool enum_::operator==(const enum_& b) const
+{
+    return this->m_value == b.m_value;
+}
+