makefile: add release-* targets

Closes #475

This doesn't exactly replicate the process @MatthewMueller outlined in #475. Differences:

  - no manual steps (this is the point, after all)
  - confirmation prompt
  - xyz will abort if run from any branch other than master
  - xyz will *not* abort if git index is dirty
  - author name used in place of GitHub username (to avoid manual intervention or the complexity of fetching usernames from GitHub)