Use heartbeat timer to keep message invisible in slow workers 

(this PR depends on #18 and includes all of it's commits)

As I mentioned in #13 there is general need for queue consumers to handle the issue of long running workers exceeding the message visibility timeout on the queue they are consuming messages from. This PR uses a simple timer to extend the timeout every 5 seconds by default.

I've used Celluloid 0.16 because it allows the user of Timers 4.0.1, rather than Timers 1.1 which is used by Celluloid 0.15.2. There is a memory leak fixed in Timers 4 which we'd want. See: https://github.com/celluloid/timers/blob/master/CHANGES.md

I haven't yet put this code through it's paces, but I thought I'd at least get something down 'on paper' for discussion. The specs pass, at least. :meat_on_bone: 
This `send_message` allows `Client.send_message(hash)` instead of `Client.send_message(hash.to_json)`.