Partial evaluation

This is the basic machinery required to get the partial evaluator, from "Scrapping Your Inefficient Engine", working again. It's not extensively tested yet, but it works for the well-typed interpreter examples (which are not exactly simple :)).