Heavy refactor of core and client

Moved Connection class into it's own module.
Renamed service -> client.
Killed old client class and made one that is more simple and easier to
use.

New client class supports `direct_only` boolean for only handling direct
messages.

New client class supports `message_filter` which is converted to a
compiled regular expression on instantiation.

Subclasses of client class will define a `handle` method that takes
data, match OR data, None.