Subset construction

Alright, here's the pull request guys.

There were some problems with this merge though. Unfortunately, because those files were just copied over, the history got really weird and I had to do a forced merge, which basically means my changes bulldozed over yours Justin for `automata.py` and `scanner.py`. It will basically look like huge blocks of code have been added. Having said that, I think our changes were basically identical, but there might be some subtle changes we need to address.

Second, it looks like the new Hofcroft files didn't actually get pushed. At least, I couldn't find them anywhere. We should probably commit those after this request.
Nice. Good plan here.