Added support for collection observation.

Collections can now be observerd with callbacks by calling
`client.observe(collectionName,...)`. This returns an
observer object that can have methods attached to it for
additions, removals and updates. Those callbacks are called
immediately on DDP messages. The observation can be stopped
with a call to `stop()`.