Initial upgrade of 2.0.0 and new DSL methods

This is a fairly large refactor and is the result of hundreds of tiny little squashed commits that don't make much sense outside of the context of this big commit.

@somera @juliandunn, this should fix that issue you reported about git tags being created incorrectly.