Full extensibility of commands

This patch allows users to extend the commands fully.

We wanted to generate routing as yaml and services as xml but when doing a quick extension of the command we've discovered we didn't had access to those functions. 

A better way for our case would be ask what type should be used for each of the 'sub-components' but that would still not solve the problem of inheritance.

Thanks!