Binary management

Hello Aleksei,
In this pull request, a proposal to manage binary data as describe https://github.com/msgpack/msgpack/blob/master/spec.md .

The packing is trivial, and for the unpacking, the printable? test chooses if a bitstring should be converted to msgpack string or binary. 

Since a msgpack string needs to be valid utf8 "non-control" characters (like elixir String), this addition is also nice because it ensures that the resulting msgpack is valid.

Have a good day !
Is there any particular reason to use `String.printable?` rather then `String.valid?`?
`valid?` has better performance (~20 times) than `printable?` and I can't find any restriction that string should be printable.