Move misplaced files and fix prototypes.
Merge pull request #28 from atgeirr/fix-cartesian

Move misplaced files and fix prototypes.
Add initial version of Dimension class.
Add UnitNode and QuantityNode classes.
Make compiler parse unit expressions.
Make QuantityNode::accept() visit subobjects.
Update to use QuantityNode, also use safer methods.

Replacing static_cast of pointers with dynamic_cast of references.
Finish basic unit support.

Still no checking of validity or effect on output
(conversion factors etc).
Bugfix: tell SymbolTable to exit loop scope.
Suppress a warning.

Multiple logical ops generated warning on clang.
Add and use ExpressionNode.

This removes the virtual method type() from Node, and places
it in ExpressionNode.
Add virtual dimension() to ExpressionNode.
Whitespace fixes.

Using uniform style per file.
Added dimension checking and support.

Still missing for function calls and arrays.
Silence errors from unimplemented parts.

Until function return dimensions can be implemented, it makes more sense
to not complain about these.
Make coefficient() const.
Add conversionFactorSI() to QuantityNode class.
Add postVisit(QuantityNode&).
Add unit and dimension support to PrintASTVisitor class.
Add support for dimensions and units to serial backend visitor.