Add type classes to encode a query parameter

This PR is not ready yet, I just wanted to use it a proof of concept for #86 and get your feed backs.

Ideally I would use 3 type classes:
 * one to encode a type T to a `QueryParameterValue`
 * one to decode a `QueryParameterValue` to T (with potential of failure)
 * one to describe the parameter key associate to a T

The decode and encode type classes should satisfy basic encoding laws:
 * for all t, decode . encode == success
```Foo(i: Int)``` would be a rather typical name. As a general aside, we have been bad at putting examples in code using the scaladoc example tags (```{{{``` and ```}}}```), probably because things are under such churn. Maybe we should consider [sbt-doctest](https://github.com/tkawachi/sbt-doctest)? I've not used that particular example, but that would be nice: nothing is worse than a stale doc example.