change unscoped enum BlockType to enum class

enum class is recommended in C++11 and on due to better type safety
added simple IO module

the IO module is able to print types from basicmath module
added IO module import to sample xml file
created initial interface of the interpreter
added interpreter example using the sample xml

before running the example, one will need to ensure that sample.xml, simplemath.dll and io_module.dll are in the same directory as the excecutable
added const qualifiers to all getters in Library

this enables getters method calls in const contexts
added BlockVisitor

an application of the Visitor Pattern to Block elements
changed datastore indexing to integers

block outputs now have unique integral ids, so they are directly saved in datastore
added interpreter implementation

Depth-first search was achieved using the Visitor pattern. Constructors are considered leafs and are unconditionally computed. Operations are only computed after their predecessors have been recursively computed.
modified sample xml to be runnable by interpreter_example
updated cmake for interpreter example