Refactored fresh variable generation.  Variables now generically track their origin using an ADT.