Added Typeable dependency.
Refactor Header representation to not store the raw representation

This disallows reparsing, but since that can be a significant source
of errors I think this is actually beneficial.

This also refactors to avoid storing the TypeId, though that is less
of a gain.
Disallow parsing as multiple types to prevent transient errors.
Merge pull request #38 from reem/persistent-headers

Refactor Header representation to not store the raw representation