Client Ping for Reconnect

* Configure PingInterval and MaxPingOut
* Reconnect if you exceed max ping out
* Any PONG will reset ping count
Adjusted based on comments

* Disable Client Ping with a PingInterval <= 0
* Don't bother nil'ing out the timer
* comment: sendPing requires a lock
* switch bw.Flush() to kickFlusher when sending a PING
Process ping only when connected
Clean up race condition
Merge pull request #39 from fraenkel/client_ping

Add a client ping