Add better support for versioning

This fleshes out the support for verifying that semantic versions are correct, and adds a few methods to increase either the major, minor, or patch version numbers.

Note that this relies on #15, so commits up to (not including) 958c39d are actually from that pull request. Once that is merged I'll rebase this branch so it only includes the proper commits.