Multi-module refactorings

Most refactorings potentially affect more than one Haskell module. If a function is renamed, and the function is exported (either implicitly or implicitly) from the module, then the renaming will potentially affect every module that imports the original module. For a refactoring to succeed on a multi-module system, it should succeed on each of the affected modules in the system. All the implemented refactorings are now module-aware.