Create macros subproject and update libraries versions

A "macros" subproject has been created inside the directory '/macros'. It will
hold all required macros for the main project. Those need to be put apart into
its own project since a macro definition and the code that uses cannot be
compiled in the same pass (with current scalac compiler). And, since SBT is not
smart enough to compile macros previously to its callers, the easy solution is
to create a subproject with all the macros, that will be compiled first, since
the main project is declared to depend on them.

Also, versions of different libraries and frameworks have been upgraded to its
latest versions.