Added a Doxyfile for automatic doc generation.
Working towards DI compatibility.

A lot of members are now protected instead of private. Introduced a new protected constructor that takes all parameters needed for work.
Work on the code documentation