Split up the decoder into separate functions.
Added unescape for header values.
Added String() method for headers.