Control.Lens.Union with Variant type classes

This pull request contains a few type classes that are for sum types what `Control.Lens.Tuple`'s `Field` type classes are to product types.  Also included are `default` implementations requiring `Generic` instances.  These implementations are used in the `VariantA` and `VariantB` instances for `Either`.  If this looks useful, I would like to document the type classes and module prior to any merge.  There is a fair amount of duplication in this with `Control.Lens.Tuple` related to type functions used in the `default` implementations that could be factored out.