New Listener#start! method to block the current thread

As discussed in #86, this implements `Listener#start` as non blocking and `Listener#start!` as blocking.

**Important:** These changes are breaking the backward-compatibility so these should be released in the 1.0.

I've also added `Listen.to!` to start listening right away in blocking mode.

I've also refactorized internal of `Adapter` and all adapters.

I've also updated some inline documentation, the README and the CHANGELOG.