Added a function on Job objects to send custom messages

This uses the same mechanism as the 'progress' method except that it is completely
general.  It effectively exposes the private 'events' object within job.js.

This functionality means that developers can easily leverage the message queue
being used behind the scenes for relay typical events like completion, failure
and progress but for other purposes.  For example, the ability to send back
a result value from a job in addition to the 'complete' event.
This adds a test case for the new 'send' method available on jobs