Add {Required,Optional}RequestBody readers.

Can we reuse `OptionalBody` request reader here? Just do something like `OptionalBody(req).map { // get or else Exception }`.