keep bundle annotations and prevent simple cycles

I don't see any downsides and this makes it easier to manipulate
custom annotations, introspectors, serializers, and other parts
that interact with annotated objects. The cycle detection is a
bonus.
finish override logic and split test logic up
Merge pull request #521 from tea-dragon/master

keep bundle annotations and prevent simple cycles