Full refactoring of the code generation module.
lts and shell modified to work with codegen
lts, makefile, smart_pointers and shell modifications added.
Merge branch 'master' of https://github.com/vmaffione/fspc into codegen
Typo corrected.
Redunding typedef cut away.
Code generation bug fixed. In the threads code, the invocation of synchronized methods on monitor instances didn't have
the '.' (member access) after the instance name ("mymonitor_method" instead of "mymonitor.method")
Fair ReentrantLock

ReentrantLock offers a ReentrantLock(boolean) constructor.
The boolean parameter stands for "fair". If set to true, a new
ReentrantLock will be created with the guarantee of fairness in
acquisition (something like FIFO lock aquisition).
This is much desirable since the default acquisition policy is
undefined and can lead to starvation.
Imagine, as an example, what would happen if the lock were granted
not to the thread waiting for the longest time but to the thread
having the lower thread id...
Merge branch 'codegen'

The "code" command is not compiled in by default.
See WITH_CODE macro in shell.cpp.

Conflicts:
	lts.hpp
fspcc, shell: indenting