Release script

A more structured release process
* makes sure no open files
* updates from git repo
* makes sure tests pass
* pushes tags and code to GitHub
* pushes to NPM