Add JsonErrorMixin

This commit adds the JsonErrorMixin for formatting error message from a
given RequestHandler as JSON.
As ugly as this might be... we should provide some way for the concrete class to influence the content type.  I can think of a few ways to do this.  It would be nice if we could check if the header is unset but alas, [tornado insists on setting it].  We could check if the current value is "text/html" (e.g., `self._headers['Content-Type'].startswith('text/html')`) but we would have to make it would if someone explicitly unsets the header (e.g., using [self.clear_header]).  Another option is to provide a hook like `get_error_content_type` which strikes me as overkill and hacky.  In any case, I think this can be handled as a future iteration.

[tornado insists on setting it]: https://github.com/tornadoweb/tornado/blob/86333d042dd834e55397e287f5e454b4d70bbf63/tornado/web.py#L271-L281
[self.clear_header]: https://github.com/tornadoweb/tornado/blob/86333d042dd834e55397e287f5e454b4d70bbf63/tornado/web.py#L332-L339