Change how Migration calls operations

- Migration now handles operation creation via method_missing
- each Operation subclass registers itself via an Operation class
  variable, which is how Migration finds them
- Migration no longer calls Dataset#field before creating operations, as
  each Operation subclass can call Dataset#field itself in the
  Operation#setup method if it needs to
- all Operation subclasses take field names as arguments now instead of
  Field objects
- AddField has a new type argument