responses should return 400 instead of 500 when inputs can't be coerced

I wrapped the `coerce` method in a try/catch and raised the `InvalidParameterError` on an unsuccessful coercion.  I figured this is what should happen, right?

I also added some new tests for extra flavor.