Channel/Listener Refactor

- Removed the concept of a "hub" and replaced it with a channel that listens to the wrapped C++ "hub". In my opinion, this terminology is a little bit better when trying to decouple a bunch of things. The main motivation behind this was the fact that our Myo instances required an ENTIRE hub instance to be passed in, when all they care about is listening to events that are incoming. A Channel instance provides the basic functionality, and a DeviceListener instance actually listens for Paired events.
- Fixed a bug with the thread joining failing within the Channel event loop (used to exist inside of the Hub class).
- Refactored the main program a bit to stick in a using statement (illustrate the IDisposable usage) and put the user input loop in its own method.