round-trip through types.

This is a phantom type, it allows for us to make strings that may or may not
be safe, and then make them so.

Heavy inspiration from http://bluishcoder.co.nz/2013/08/15/phantom_types_in_rust.html