Handle empty EDN request bodies gracefully.

A few changes are included here:

- Empty EDN request bodies no longer produce exceptions
- Empty EDN request bodies are handled uniformly in test and production code.
- Test contexts set up in body_params_test.clj implied they are reusable, but the streams are consumed during use. I moved their construction into the test functions themselves, instead of being separate declarations.