Changed extraction logic for deep inspection

There were problems with nested objects. It was imposible to generate code
to do a deep extraction. This approach uses implicitly available
Extractor[TNested, T, TAnn] objects.

The plan is to issue warnings for custom case classes that don't have an
Extractor defined. Whether this can be reliably achieved is a task for
future me :)
WHOOOOOHAAAAA

It seems that the implicit approach is going to work.
There needs to be a good balance between compile errors and
silent ignores. Primitive types like Int, String shouldn't give
exceptions, List[T]/Option[T] should automatically work, more like that.
Traversable[T] works!
Merge pull request #1 from q42jaap/extractor-per-annotation

Extractor per annotation