Improve error message for JSON parsing errors

This works by overriding the Flask Request's json
`on_loading_json_failed(e)` function so that it returns a descriptive
HTTP 400 rather than an empty one.

Note that we're trying to test against a specific exception string
defined by the JSON class - this is not stable (see
https://github.com/python/cpython/commit/d4b076156d1cd5460853b7a0dd4477a1b11c75f2)
- so I've made the message matcher use regular expressions rather than
exact string match. This required upgrading the hamcrest module to a
later version for `matches_regexp`

https://www.pivotaltracker.com/story/show/69911234

[Delivers #69911234]