Dictionary Validation

This is also probably not complete. More questions incoming...
I do tend to use type alias's to clean things up, but i am becoming more of the opinion lately that they should only be used in two ways:

1. In a package or fat object, so it can encourage consistent use throughout the api.
2. Hidden within a class/object to reduce long type declarations, and not exposed to other code.
  * An example is within the snapshot mr classes ```type MapperContext = Mapper[NullWritable, BytesWritable, BytesWritable, BytesWritable]#Context```