Allow user to add router, conversation and channel components

In the long run I think the data structure used internally by the UI can be separate from the one used by the API. There just needs to be a way to map between the two.