first pass at desugaring

Desugaring now passes core lint on the test suite, except that tests of
forms need updating to the new structure before they can be run.