Refactored the Controller/Router Codebase

Each Project type now has its own Router class which extends
RouterAbstract. The Router finds a ControllerEntity which is used to
call the controller action.