Build metadata identifier

Build metadata is a completely optional way to tack on metadata to a version  that does not affect the public API or precedence while still be compliant with SemVer. It's similar to a comment.

This allows folks to build on additional meaning or behavior that's meaningful to their custom systems without making any claims about the public version. For example, folks might use it for cache busting, layering custom behavior on top of SemVer, bookkeeping to tie when and
where a build was made, etc.

This PR is related to #61 and supersedes PR #70. You can see the previous discussions over there.