Fix various unicode issues

This patch-set fixes a number of issues relative with handling unicode strings.
These commits try avoid mixing bytestrings and unicode objects, by decoding
bytestrings as early as possible (Input) and encoding unicodes as late as
possible (Ouput). In the API the encoding that is used is always 'UTF-8'. In
the CLI the encoding that is used is the user's preferred encoding.

Besides unicode issues, this patch-set fixes handling of image metadata
(Plankton) which are views as HTTP headers. Since, image metadata must be valid
HTTP headers, metadata keys and values which contain user defined values must
be properly quoted and unquoted where needed.