Refactor ExtractFunction.

* Reads a lot better now
* It looks like it wasn't quite done; it didn't remove the extracted
  statements and replace them with a call to the extracted function.
  Fixed that, but it still doesn't quite match what's in the thesis.
* now extends Refactoring, uses a Transformer
  (works fine with BasicTransformer; need to think harder about layout
   preservation)