Refactor version.{h,cpp}

Provides a more logical interface to the version number.
Modify header guards to match conventions
Add class and function headers to match conventions
Class Version -> tfVersion to match conventions
Move the tfVersion definition into the namespace

This isn't necessary, I just thought it made sense since we already have
the GetVersion prototype in there.
Merge remote-tracking branch 'tgascoigne/development' into 'development'.