Add class responsible for names mangling

A class that mangles names is implemented. It is intended to provide unique
names for variables, functions, tags, type definitions and instantiated
components. Tests for the class are also added.
Implement mangling names in instantiated components

Names that refer to entities declared in instantiated components are mangled
again as they denote new copies of these entities. Other mangled names are
preserved.
Add mangling names of tags

Tags names are now mangled. It means that each AST node of a named tag
reference contains a globally unique name. All tag references with the same
unique names (regardless of their locations and scopes) correspond to the same
tag type.
Add mangling names of enumeration constants

Names of enumeration constants are now mangled. Currently it is done only for
definitions of these constants.
Add mangling names of type definitions

Names of type definitions are now mangled. Identifier declarators that are used
to introduce new type definitions and references to these definitions contain
the same globally unique names.
Add mangling names of variables

Variables names are now mangled. Each newly declared variable is associated
with a new unique name and the name is stored in the symbol table and in the
identifier declarator of the variable. References to these variables do not
currently contain the unique names of referred variables.
Add mangling names of functions

Names of functions are now mangled. AST nodes of identifier declarators used
for declaring or defining functions contain unique names of these functions.
Moreover, the unique names are stored in the symbol table.
Add resolving unique names of entities in expressions

Unique names of entities referred by identifiers in expressions are now stored
in their AST nodes.
Generate unique names for instantiated components

Names of instantiated components are changed in their AST nodes to new names
that are unique in the component namespace. Constructs that cause generation of
new components are modified to form part of a correct NesC program.
Save results of resolving implicit connections

Names of specification elements that are implicitly connected using implicit
equate or implicit link wires are stored in AST nodes of their endpoints.
Add setting call directions of connections

AST nodes of connections have set the direction the indicates implementations
of interfaces and bare commands and events.
Implement creating the graph of connections

The process of creating the directed graph of connections between
specifications elements of components is implemented. The graph that
is created contains labeled edges if there are some connections involving
single elements of parameterised interfaces or parameterised bare
commands or events.
Enhance support for NesC constant functions

New AST nodes 'UniqueCall', 'UniqueNCall' and 'UniqueCountCall' are added. They
represent calls to NesC compile-time constant functions and are created when
such calls appear in the program (instead of 'FunctionCall' nodes). Moreover,
correctness of the calls is checked. For instance, if the first provided
parameter is not a constant string, an error is reported.
Add generating method for traversing unique calls

Each AST node contains new method 'traverseUnique' that visits all children
of that node and reports all encountered AST nodes that represent calls to
NesC constant functions to given unique processor.