Renames Streamer to the more sane sounding Middleware

Also refactors the internals a bit to make the code a bit more
functional and easier to read.
Refactors pretty much the entire thing

The amount of event listeners were getting a little out of control, so
this make everything a lot more functional.

TODO: Error handling, disconnect clean-ups, logging.

* Features a much more reduced footprint

* Harnesses promises more efficiently when creating the exchanges and
  queues

* Still needs some tidying
Refactors the promise logic up the Middleware request handler

Also adds a catch clause
Adds clean-up logic when socket closes or errors are triggered
Removes message listener when subscriptions are ended
Renames :unsubscribe event to :ended
Adds a Logger construct for print useful debugging output to the logs

Each connected client will write to the log files with a unique
identifier prefixed to each line. This includes the designated
application name, user ID, and UID for each unique connection.
Adds provider names to Provider modules
Adds LogSubscribers back in

This thing can generate a TON of log output. I should probably add a config
option to set the log level.
Version bump to 0.0.4