Read version field from header structure.

This is the official and definitive way to read package version.
Refactor the Header class with a bit of metaprogramming.

All accessor methods are now dynamically defined using the keys in the hash
maps that maps numerical tags to their semantic purpose.
This will allow for less duplication and easier feature addition.

Also, this might be going to be replicated into the Signature class, and would
allow for some sort of merging between the two. For the moment, let's just see
where design drive us.