Move internal Django structure walking into separate generators.

Allows abstracting out the actual interpretation of Django internals, and re-using the abstraction for the TranslationAwareManager. This code is adapted from running work on #196.
This should also be faster as it avoids recursive calls by using a queue+loop approach.