Tests and Retry fix

Changes:

* Simplification of Message and 'new' checks on constructors
* value.toString was unnecessary in message.js, and would be a problem if object - i.e. { value: true }.toString() -> [object Object]
* Tracking has data was unnecessary, just call Object.keys on data once in sender (rethink if multiple retries is the most common use case)
* Bug in retries for sender.send(), always one short, fixed
* Simplified sender.send() by removing if statement
* Unit tests for Sender and Message in detail
* TODO Still could use some integration tests, but task for another weekend...

No changes should be breaking, but should run version live to confirm.