`watch` will json.parse passed strings. Fix #21

`watch` continues to grow in power and 'smarts', by attempting to
`JSON.parse` subject and data.

`record` stays pure.

Notes / Rationale / Implications:

1.  Observer service expects (string or null) most places.

In particular, it doesn't handle having an `object` for `data`.  Most of
what we want to see for `data` are objects.  For channels we control, we
will handle this by adopting the convention of "json or it's a string".

https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIObserverService#notifyObservers%28%29

2.  Users must remember to serialize their objects, or they will get
`({}.toString())` (i.e., "[object Object]").  It's hard to see how one
would ever actually want this outcome, so we throw.