High-level query API for connected stories

There were a lot of complicated, difficult to understand ORM queries to
select or exclude featured stories.  After reading
[Building a higher-level query API: the right way to use Django's ORM](http://dabapps.com/blog/higher-level-query-api-django-orm/),
it seemed like using custom QuerySet and Manager implementations was a good
way to make view code more independent from the ORM, to make queries
more readable, and to make queries more DRY.

I added a custom QuerySet class, StoryQuerySet, for Story models that has
methods that let you find connected, normal and seed stories. I also
implemented mixin classes in the storybase.managers module that are mixed
in to StoryQuerySet to select stories that are flagged to be on the homepage
and stories that are published.

The methods of StoryQuerySet are proxied to StoryManager.  Also,
StoryManager returns a StoryQuerySet, which means that Story.objects.all()
will be a StoryQuerySet.  The use_for_related_fields flag is set for
StoryManager, so the custom query set methods should be available across
relations as well.

There are a number of places in the code where the custom query set methods
can be used to clean up the code and this should be done in future commits.
Merge branch '198-homepage_banner' of github.com:ghing/atlas into 198-homepage_banner