Created to replace the old Version class. Having a class just to hold
variables to be used anywhere seemed a bit strange to me so I've
switched over all of the code to use an enum instead.

This does result in slightly longer code, but it improves readability in
some cases.