Add test for better error message for bad JSON

When we pass invalid JSON we should get a sensible message.

https://www.pivotaltracker.com/story/show/69911234
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]
Merge pull request #283 from alphagov/improve-error-messages-4

Improve error message for JSON parsing errors