Double-check reification before proceeding, due to races.

The reification logic is mostly synchronized, but there are some
paths like reifyWithAncestors that are unsynchronized. I have
concerns about blindly synchronizing them since there would end up
being many locks acquired, which screams deadlock to me.

To fix #188 I instead opted to just re-check whether the class has
been reified already within the synchronized reify method. This is
a form of double-checking, but it should be safe here and should
prevent a double-generate + double-load of the reified class.