operator.h: Add operand priority information in Operator classes

To avoid tests like "if( type == Token::XFX )", we place the
information about the maximum priority an operand can have in
attributes in the classes UnaryOperator and BinaryOperator.

Since these classes are not typedefs anymore, the template Operator
was renamed to OperatorBase.

NullaryOperator was also changed to a class for consistency.
operator.h: Add method insert to OperatorBase.
symbol.h: Add factory-like method to Category

This function keeps a counter to generate different category values.
symbol_table.h: replace method operatorPriority with four methods

Each of the four substituting methods corresponds
to one type of operator.

tree_build.cpp: renamed method calls accordingly.
Substituted the global symbol table class for a namespace

Since the symbol table was being developed as a singleton,
it is simpler (and removes #includes in the header) to just
use a namespace with several functions.

symbol_table.h: do the change;
tree_build.cpp: renamed method calls to function calls accordingly.
symbol_table.cpp: Implementat GlobalSymbolTable::insertOverload.
symbol_table.cpp: Implemented functions for Category manipulation.
symbol_table.cpp: Implement functions for operator retrieval.
symbol_table.cpp: Implement functions for operator existence query.
symbol_table.cpp: Implement functions for operator priority retrieval.
symbol_table.cpp: Implemented functions for operand priority query.
symbol_table.cpp: Implement LocalSymbolTable.