Prevent duplicate asset assignments

Prevent multiple assets from being assigned to the same section and
container.  The likely scenario that causes this is a user opening the
same section in multiple browser windows or tabs.

This fix does a few things:

* Adds a ``unique_together`` constraint on the ``SectionAsset`` model
  using the ``section``, ``container`` and ``weight`` fields.  The
  ``weight`` field is included because some stories created in the Django
  admin don't have a container selected, so we differentiate between them
  by the weight field.
* Adds a data migration to fix existing ``SectionAsset`` instances that
  violate this constraint.  The data needs to be clean before adding the
  the ``unique_together`` constraint.
* Updates ``SectionAssetResource.obj_create`` to catch the
  ``IntegrityError`` raised when the the ``unique_together`` constraint is
  violated and returns a 400 error to the client.
* Updates the ``SectionAssetEditView`` Backbone view to handle the error
  returned by the API endpoint, show the user an error message, and refresh
  the UI to show the previously added asset.

Addresses #535
Tweak microcopy for error message

Slight update to copy based on suggestions by @jwirfs-brock.

Addresses #535
Clean up SectionAssetEditViews

``SectionAssetView.renderAssetViews`` created new SectionAssetEditView
instances each time it was called.  That seemed not only wasteful, but also
left ghost views that still responded to events.  This commit keeps track
of the child views and only creates new views when needed. It also calls
the ``close`` method on the sub-views to clean up their event bindings.

The sub-views for asset editing are tracked through a ``_assetEditViews``
object, with container names for keys.  The creation of
``SectionAssetEditView`` instances was also factored out of
``SectionAssetView.renderAssetViews``

Updated ``SectionEditView.removeAsset`` to remove the
``SectionAssetEditView`` when an asset is removed from the section.
``removeAsset`` gets called by ``changeLayout``, so the view is cleaned up
when the layout is changed as well.

I also had to update ``changeLayout`` to handle the case where there are no
asset models bound to the ``SectionAssetEditView`` instances to just remove
all the sub-views.

Finally, I renamed ``SectionAssetEditView.remove`` to
``handleRemove`` because it was clobering Backbone's ``View.remove``.

Addresses #671
Merge branch 'hotfix-671-two_posts_text_asset' into develop
Merge branch '535-avoid_duplicate_sectionasset' into develop

Conflicts:
	README.rst