Refactor connection

Do`h! Thats a big one :)

sorry for not making more than one branch `*g*`

**TLDR** i touched nearly all code to refactor `Connection`.

So this weekend i though i would try to add a nice small feature to cleanup the reconnect code in `node-xmpp-core/lib/connection.js`. What i've ended up with is like i refactored  all the code that touches somehow a connection or even comes near a socket. i hope i didn't break anything …
anyway .. it's now possible to change the socket of a connection.
this cleans up code that reconnects, upgrades to tls and dealing with client connections on the server.

… and of course i munched in other changes into these PRs too:
* all connections have now more events!
* i changed the code style a little bit. just things like `.on` instead of `.addListener` and more `.bind` usage
* session ids used in servers are now generated by  a [hat](https://github.com/substack/node-hat#readme)
* split `node-xmpp-server/lib/bosh/bosh_server.js` in two separate files
* bugfixes

_happy code reviewing!_ :D

PS  of course most of the tests on travis are failing because the versions aren't bumped up yet.
… so don't forget to touch all the version fields, @lloydwatkin :)

**PRs**
node-xmpp/node-xmpp-core#18
node-xmpp/node-xmpp-client#24
node-xmpp/node-xmpp-server#25
node-xmpp/node-xmpp-component#6