Is it intentional that different subclasses should keep their own caches? What's the use case for the situation where calls to `XBlock.load_class('a_block')` and `AnotherXBlock.load_class('a_block')` access different caches?