Reassign assets to new containers on layout change

Instead of removing assets to the asset drawer when the layout of a
section changes, try to reassign them to corresponding containers in
the new layout.  When there is no corresponding container, e.g. when
there are fewer containers in the new layout, remove the asset to
the asset drawer as before.

In order to achieve this, I had to refactor some of the builder
Backbone code:

* Move the binding of sections to assets out of the view code and
  into the Asset model and the SectionAssets collection.
* Move the declaration/instantiation of the SectionAsset model
  out of the views.  This could likely be further improved by adding
  semantic names.
* Allow PUT requests to SectionAssetResource. This is needed to change
  the container when the layout changes.
* Define a mapping of container "weights" across different layouts.
Better API for managing Asset to Section relations

Manage these relationships through methods of the ``SectionAssets``
collection.  When a ``sync`` option is passed to
``SectionAssets.add()`` or ``SectionAssets.remove()``, persist
the relationship to the server through a ``SectionAsset`` model.

With this change, calling code no longer has to deal with the
``SectionAsset`` model instances and ``Asset`` model instances
don't need to know about their section relationship.  Calling code
just needs to do something that feels pretty natural.  Add/remove
models to/from a collection.  We provide on utility method on
the collection, ``updateSectionAsset`` for updating the container
when we change the layout or for persisting the relationship
after we've already added an item to the collection.

Still TODO:

* Better comments for the code

Addresses #914
Cleanup of section to asset relationship handling.

* Document newly-added API methods.
* s/saveSectionAssets/saveUnsavedSectionAssets/ to more accuretely
  reflect what it does.
* Handle empty ``options`` in a few places to avoid errors.

Addresses #914
Update builder full process test

Update the builder full process test to reflect assets being
reassigned, if possible, to containers in the new layout rather than
sent straight to the drawer.

Addresses #914