Moved exception based syntax check into buildTree
* invalid expressions typically cause the operator and operand stacks to become unbalanced
** this in turn causes a operator_exception instance to be thrown as soon as the shunting yard implementation in "buildTree" tries to modify the stack _too far_
** this is not directly visible from the tree construction implementation
* the compilation unit local helper methods "pop" and "top" now return "boost::optional<Node*>" instances
** this enables the operator placement errors to be handled where they occur
* as a side effect children assignment is now more obvious through correctly named variables
* added missing default initialization in lexer implementation