Refactored the API to remove VersioningScheme.

This also involved switching VersionParser from a concrete class to an
interface that must be implemented along with each implementation of
Version.