Make original story widget available

By specifying a ``data-version="0.1"`` attribute in the embed code, the
original version of the widget can be preserved.

Addresses #741, #831
Merge commit '6934a19d69ad6f77e5cf863d013bf56dfc426893' into 741-embed_widget
Update embed widget JavaScript

Support single story embeds, list embeds and story + list embeds.

Also support widget version option.

Addresses #741, #823
Handle widget versions in the same view

The likely part of the widget to change between versions is the
template, so it doesn't make sense to have separate view classes.

Instead, just implement the ``get_template_names()`` method to
also search for a version-specific widget template.

Addresses #741
Views that include lists of stories in widgets

Checkpoint commit for implementing views that list stories for
a particular taxonomy term and include stories for a particular
term along with a featured story.

Addresses #741
Merge branch 'develop' into 741-embed_widget
Handle paths without '/'s in embed widget

The embed widget JavaScript simply creates and iframe element and
sets its src attribute to the specified detail URL + 'widget/'.

To properly form and resolve URLs, we need to make sure that they
end in a '/'.

Addresses #741
Add views for stories of topics and tags

Widgets for lists of stories aggregated by different means
(organizations, places, projects, keywords (tags), topics) are created
by JavaScript that converts a URL for a page for that particular
taxonomy item into an iframe.

For instance the URL
http://floodlightproject.org/projects/finding-a-bite-food-access-in-the-childrens-corrid/
will be converted to a a widget listing stories for that project.

While views and URLs exist for taxonomy item pages for projects and
organization. They didn't yet exist for keywords (tags) and topics.

We've used the explore page as the means to list stories for topics,
places, projects and organizations, so I added a new view class
``ExplorerRedirectView`` which routes a slug-based URL to the explore
page with filters set. This provides the implementation for the
'/topics/<slug>/' path.

The explorer doesn't support keyword tags, so I made a simple view,
``StoryListView`` for listing stories for a given keyword tag.

Since StoryListView uses paging, I broke the paging styles into its own
less file, paging.less so and adjusted the class names slightly in the
search results templates so the pagination styles could be used in both
places.

Addresses #741
Add slug field to Place model

To make human-readable URLs for creating a place list widget, we
need to add slugs to the Place model.

Addresses #741
Clean up incorrect comment
List widget view for Places

Addresses #741
Document views for updated embed widgets

Move documentation of context out of the template and into the template
file to the ``get_context_data()`` declaration

In the process of documenting various view class methods, I cleaned
up the signature of the ``StoryListMixin.get_story_list()`` method:

* Remove the ``count`` argument as it seems more consistent to slice
  the returned queryset in the calling code.
* Make the ``view_kwargs`` argument default to ``self.kwargs``

Addresses #741
Merge branch 'develop' into 741-embed_widget
Update tests for resolve_list_uri()

Test all types of valid URLs for ``resolve_story_uri())`` as well
as an an invalid URL.

Update the return values of ``resolve_story_uri()`` in the case of
an unresolved URL.

Remove test stub for ``get_story_list()`` as I plan to rethink
how to test this functionality.

Addresses #741
Custom 404 template for widgets

We probably don't want the default 404 template showing up in
broken embed widgets, so use a custom template,
``storybase_story/widget_404.html`` for widget 404 errors.

This functionality is implemented via a mixin class,
``Custom404Mixin`` that short-circuits the default handling
of ``Http404`` exceptions.  This should be used sparingly.

Also moved ``VersionTemplateMixin`` to the
``storybase.views.generic`` module.

Addresses #741
Tests and refinement for StoryWidgetView

Add tests for URL routing and context of ``StoryWidgetView``.

Only try to get related stories if the list URL can be resolved.

Always have ``stories`` in context, but it should be an empty list
when no related stories are found or the list URL cannot be resolved.

Addresses #741
Test widget can't be shown for unpublished story

Addresses #741
Add unit tests for list widget views

In order to avoid repeated code, create a mixin class with
common test initialization and test methods.

The logical home for this mixin class is
``storybase_story.tests.base``, so ``storybase_story/tests.py``
had to be moved to ``storybase_story/tests/__init__.py``

Addresses #741
Merge remote-tracking branch 'origin/develop' into 741-embed_widget
Export widget object as storybase.widgets

The widget script is now exported as ``storybase.widgets``. This
lets us export additional methods if we want to test them. It also
provides a way to check if the widget script has been previously
loaded and short-circuit the rest of the setup, eliminating the
previous requirement that the script only be included once.

The ``showWidgets()`` function now only processes placeholders if
the ``style.display`` property is not set to 'none'. This allows
``showWidgets()`` to be run multiple times, which is what happens
if the script is included multiple times.

Addresses #741