Additional filtering capabilities

@WilDuck I added additional filtering capabilities in django entity very similar to the types of filtering we discussed. Specifically,

1. When you get an entity, you can now call entity.get_super_entities().active() to get the active super entities or entity.get_super_entities().active().is_type(super_entity_content_type) to get the active super entities of a certain type
2. You can now call Entity.objects.intersect_super_entities(superentity1, superentity2) and it will return a list of entities that fall in the intersection of those super entities. You can also perform the intersection on a queryset. It only results in one query too :)
3. You can call Entity.objects.filter(....).cached_relationships() and it will cache the entity relationships so that you can quickly filter entity relationships without incurring additional db overhead
4. Similar to how you can filter entity relationships, you can also filter entities with Entity.objects.active().is_type(...) and other chainable functions.

I tested it pretty thoroughly (still 100%) and updated docs. Turns out there is a self.assertNumQueries function to check how many queries a block of code issues.