Make room for read heartbeat timing error. And don't panic when receiving it.

It is quite obvious that when setting heartbeat to 1 minute in reality the
message may arrive slightly later. STOMP specification says that we SHOULD
take this into account, and yes if we don't it causes problems in my setup
(some rabbitmq versus client in different country).
So, add a field to Options with error duration, set default to 5 seconds,
and also don't try to dereference f if it's nil.
update theraphim's pull request so that unit tests pass