Parameterized return type for (de)serializers

This PR lets implementations choose the return types for parsers and writers.

* current implementations use `Try`
* tests rely on `M[+_] : Monad : Comonad`
* we provide typeclass instances for `Try` (not provided by scalaz, unlike instances for `Future`)

This doesn't not deal with the `Reader` discussion, nor relative graphs serialization, which is left for future PRs.

Please provide feedback, or ask questions, as soon as possible, so that we can tackle the others issues. It would be nice if @antoniogarrote could look quickly at what's done here as well.