Make API type-safer

Changes:
 - Restrict type of keys (including hash's) to `String`
 - Parameterize type of values
 - Rename `Format` to `Write`, `Parse` to `Read`

TODO:
 - Combine `Read` and `Write` into `Format`
 - Support various argument types for lua scripting
Change argument order of SET as documented

Redis server dont' care of which of [EX|PX] or [NX|XX] comes first, but
changed to match the documentation to avoid confusion.
Combine `Read` and `Write` into `Format`

Trait `Format[A]` has both `Read[A]` and `Write[A]`. Inner object
`Implicits` is now top-level trait/object `DefaultFormats` so users can
use implicit readers/writers with single import or mixin.
HKEYS returns `String` only
Minor improvements
Avoid unnecessary `.toList` in `RedisCommand.line`
Add error message for implicit to PartialDeserializer
Allow various value types in a command

This commit introduces `Stringified`, a value class implicitly wrapping
a `String` formatted by `Write`. Now commands require `Stringified`
instances as values instead of parameterized `A` with implicit
`Write[A]` to allow various types of value in a single command.
Make String as default type parameter for commands

This commit prioritize `stringFormat` to make `String` as the default type
parameter of parameterized commands avoiding ambiguous implicits.
Add test for various value types
Merge pull request #21 from guersam/tmp/typed-write

Make API type-safer