VersionUtils: add missing final keywords
VersionUtils: tweak javadoc
VersionUtils: prefer version from manifest

This is because the manifest may also contain other information such as
the SCM revision, which will start mattering shortly (see next commit).
VersionUtils: refactor manifest version extraction
VersionUtils: add method for class's build number
VersionUtils: append build number to SNAPSHOTs

This provides a more robust (i.e., more unique) version number when
working with development versions.