KIJIMR-13. Seal kiji-mapreduce.

This commit makes the following changes to the kiji-mapreduce API:

  1. All abstract classes and interfaces are marked with inheritance
  annotations (@Inheritance.Extensible or @Inheritance.Sealed) that
  indicate whether the audience for that class/interface should or
  should not extend/implement the class/interface.
  2. Classes in general are made final when possible.
  3. When possible, the access modifiers for constructors have been made
  more restrictive (private or package-private). Factory methods have
  been provided with public access modifier.