Routing: Implementing an interface for component router rules

This introduces an interface for component router rules. These are pretty similar to the application router rules. The idea is, that Joomla will provide both a traditional router class that people can use for very limited components and an extended, rules based component router, which is easily extendable on the fly and requires just a tiny amount of code from the component developers. For those last types of routers, the router rules are implemented and this is their interface.

This is a cleaned up version of #4715.

This was made possible through the generous donation of the people mentioned in the following link via an Indiegogo campaign: http://joomlager.de/crowdfunding/5-contributors

@Hackwar based on the last code style you can remove the `@package` and `@subpackage` tag here and aglin the `@since` tag :+1: 

Also iirc we use @since 3.4 without the zero atm.