graceful on-error handling

In order to handle JSON parsing exceptions gracefully and provide a meaningful error to the client I've added a hook to include an :on-error option. This :on-error option takes a fn that can either return a response with the appropriate error code and message or generate a different custom handler to be passed onto to the next middleware. 

Separately I've added the keywords? option to `wrap-json-params`.

Most likely in a separate pull request I'll consolidate the common functionality of `wrap-json-params` and `wrap-json-body` into a macro.