Code and makefile reorganization

Every component of the framework is now in its own directory.
Each component has its own Makefile.
A global Makefile is available to build everything from the
project root directory.
Update docs