Json improvements

- Use `base/thrower.h` per #21
- Make error messages more descriptive
- Allow getting a string directly out of a JSON blob which is a string

@JasonL9000