Create a method of accessing version components.

Because version components are stored in an array of characters inside a
union (this is done to simplify direct comparisons between objects) it
is slightly awkward to access to individual components.

The definitions 'm_ma', 'm_mi', and 'm_pa' are used to hide access
complications through being false members. Through a series of macro
definitions it is possible to account for endianness
(http://en.wikipedia.org/wiki/Endianness) without slowing access times.

If all is correct, the only drawback to this method (opposed to relying
on three separate data members is the artificial limit of 2^CHAR_BIT - 1
on each component and a single byte that is never used.

The function 'm_SetVersion' is a helper function that should be used in
shared initialisation steps of each constructor.