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.
Also, can't you bind the item, like `i@Typed(..)` and return i?