feat(*): Created interface for data-structs

Since we are generating the parsed tree with bison, and it can only
pass unions on its stack, we are forced to use trivial/default
constructor/destructor. This might lead to some memory management
issues currently, but could be fixed with smart-pointers or custom
destructor functions (TODO)

Now the interface/structure looks as follows:

term := const
          | var
          | func term
          | func term term

fmla := eq term term
         |  cnct formula formula
         |  neg formula
         |  quant term formula