Initial commit

I’ve been working with this off-and-on for a while now, so it’s
probably a good idea to put it in source control.