Add checking if all declared tasks are implemented

It is now checked if all declared tasks has been implemented. If not, an error
is reported for each declared but not implemented task.
Implement loading and checking the scheduler component

A new option '--scheduler' is added. It specifies the scheduler to be used by
a NesC application. A proper scheduler component is loaded by the frontend and
then check for correctness. All errors detected in the scheduler component and
in the task interface are added to project issues of the NesC application.
Refactor names mangling

Name manglers that have been previously implemented are generalized and unified
by combining them in a single classes hierarchy. Moreover, the mangler used to
mangle names in the entire NesC application is now associated with the frontend
context instead of using a global name mangler with the singleton pattern.
Implement final mangling of names

One of operations that are done during the basic reduce stage is implemented
- it is the final mangling of names. Unique names of global entities and
entities marked with @C() attribute are set to original names of these
entities. Moreover, generated unique names that clash with global names are
changed.
Implement tasks transformation

The transformation of tasks to interface references and wiring with the
scheduler component is implemented. A new task interface reference is created
for each task. Moreover, tasks implementations are changed to events
implementations and posting expressions to command calls to the scheduler
component. Furthermore, the created interface references are wired to the
parameterised interface provided by the scheduler component.