Properly stringify non-objects and non-arrays.

JSON is a funny thing. Strings need to be escaped in a bunch of ways (`\n`, etc) and others like `NaN`, `null`, and `Date`s all have their own little intricacies. Moreover, when `stringify`ing, `undefined` is dropped all together in `Object`s but it converted to `null` in `Array`s (it's not part of JSON, only JS).

This fixes all of those by using the `JSON.stringify` method directly on anything that's not an `Object` or `Array`.