Constant prop optimizations

Extends @wheybags branch from #2 and performs the following optimization passes:

* Simple Constant Propagation
* Copy Propagation
* Constant Folding

Still needs comments and a bit of refactoring, and it's likely to stay in flux for a while as things change in #2, but is feature complete for now.