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 :)