Mark client as disconnecting if #end is called
Add simple reconnect to MqttClient

Implemented at the mqtt level to avoid coupling mqttclients
to tcp.

Currently no tests, since testing it requires some refactoring
of the test suite. Stay tuned.
Test using a fake correct functioning server

One that acts mostly to mqtt spec
Refactor out boilerplate
Change 'mark as disconnected' test
Simplify ping timer test
Add reconnect test
Don't setup a reconnect timer if it's already running

Slightly confusing since you wouldn't expect the socket
to be firing 'close's if it never connects. But it fires
both an 'error' (econnrefused) and then a close.

So we wind up with a thousand reconnect timers.
Don't setup testing server in before

Unnecessary
Swallow stream errors

Since they're most likely to be econnrefused or epipe
which will be (attempted) to be corrected with the next
reconnect
Randomly generate packet ids
Ignore acks with message ids we don't know
Reshuffle client constructor
Include existence check in _setupPingTimer
Correct emit close test
Move reconnect logic to inside mqttclient

Behaviour on reconnect can be altered (indeed, needs to be altered
so it actually works) by overriding the _reconnect method.
Allow specification of a reconnect period
Refactor reconnect timer setup/clear into own functions
Merge pull request #101 from adamvr/auto-reconnect

Auto reconnect