Added exceptions, methods to Session and Module, implemented the __main__.py, splitted the utils module into a spearate sub-modules into a new package, etc. etc.
Switched to Python way of importing modules, relying on the standard module import mechanism. Removed the ModuleCyclicException class.
Fixed bug in argtypes decorated and import_object function
Added argtypes signature to Module.register_target
Added name attribute to targets and module and adopted the TargetNotFoundException to give a more useful error message.
Added session attribute to the Module class and an argtypes signature for its constructor.
Changed Target/Module relationship. Each target has a name which is specified at construction time, but the module is set on registration via Target.init_target()
Added the make.utils.term module and added the -x option to  __main__.py which results in colorized error output.
Added testproject files. Makefile needs to be implemented.
Added the make.utils.expr module, adjusted the argtypes decorator accordingly.
Removed CyclicLoadingException, renamed CycleReferenceException to CyclicReferenceException
Switched to using a mid-layer between targets and modules, the ProxyTarget. Each target now has a reference to its proxy instead of its module. Respective properties for the session and module have been added to the AbstractTarget class. The get_dependencies() method was added to the AbstractTarget class which allows for defining dependencies of a target that must be built before the actual target can be built. A CyclicReferenceException is thrown when a target references itself in the dependencies (or any of the branches references a target in a higher level of the build phase).
Updated the test project.