Refactored out user command processing into own class.

This is a rather large commit. Let's review it and see how to approach stuff like this. Everything is so *%!# coupled that splitting things just isn't easy to contain to something small. This refactoring was to move out the user command stuff and it's a lot.

@lclc and @toxeus if you have some good idea how we want to do this I am happy to hear :)