Node refactor

Temporary home of the Node refactor.

Ideally, this should have been merged into the `beta` branch, but the pull request was forked from `master` and there are a good number of commits in the `beta` branch that I didn't have in my original fork. Rather than deal with a crazy rebase, I created a new branch off master in the @code4sac repo and am merging it into that.

If all goes well, we can drop the `beta` branch and rename this one to replace it.