core: ObjectWriter and ObjectReader are now components on their own

and Writer uses pretty printer except in prod mode.
spec: fix several issues with spec recording and testing

- add a test for per request recording
- fix: uuid recorder was not working properly, it was adding the given too late so
   that it wasn't part of the recorded spec. Now given tapes are closed before their result
   is used, which makes it easier to implement without threadlocal
 - fix: when using a printwriter for response, the recorder wasn't flushing the printwriter,
   so the response wasn't always fully captured.
 - fix: when checking a plain text response with a spec, trim both result and expect