Update transform module

This all seems to be working, and the tests all pass. I would just like some other people to look over it before we pull it in. It includes a lot of big changes to the module.