damn near complete rewrite for 0.3, in order to implement dependency-tracked expressions. Duct tape and sawdust everywhere, bear with me