Light refactoring for testability.

Code in GitVersion.cs is more difficult to test than other classes due to needing to mock third party libraries (LibGitSharp).  This commit moves some logic out of GitVersion and into Version, which is much easier to test.
Renames VersionTag.TryCreateVersionTag to VersionTag.TryCreate.

Renames VersionTag.TryCreateVersionTag to VersionTag.TryCreate to remove redundancy.
Pulls some code out of GitTask and into GitVersion for testability.

GitTask should have as little business logic as possible since it cannot be unit tested.
Cleanup.
Major refactor and implements prerelease versioning.

See https://github.com/Zoltu/Zoltu.Versioning/issues/7 for details on how prerelease tagging is implemented.
Merge branch 'commit-count-after-prerelease-version'