Check Content-Type and Accept headers

If the Content-Type and Accept headers are not set to `application/json` on the request, return 415 or 406 respectively, with a helpful error message.