Split controllers by content-type and function

This PR splits up the AddonController in several controllers specific for each content type (category, addon, author) and usecase (search). It also adds the ability to define new custom routes and map those to any new controller.