Remove unused callback function definition
Use state pattern for SectionAssetEditView

``SectionAssetEditView`` had a bunch of unwieldy if statements to check
for state and perform certain actions.  Using a version of the
state pattern, similar to what's described at
http://robdodson.me/blog/2012/06/02/managing-your-backbone-views-with-the-state-pattern/
eliminated branching in the methods of ``SectionAssetEditView``
quite a bit.
First pass at text asset autosave

Save a text asset on the wysihtml5.Editor object's ``change`` event,
which is essentially fired as a result of a ``blur`` event on the
editor's element.

To reuse ``SectionAssetEditView.saveModel()``, add an optional
``changeState`` boolean argument to the method that can suppress
the changing of view state when the model is saved.

The behavior of the "Save" and "Cancel" buttons still needs to be
updated to take the autosave behavior into account.

Addresses #848
Feature for editing text assets

Initial acceptance tests for editing text assets and checking for
autosave functionality.  Based on the list at
https://github.com/PitonFoundation/atlas/issues/848#issuecomment-26346487

Addresses #848
Checkpoint for text asset autosave

Save text assets when the user leaves the editor and try to properly
roll-back when the user clicks the "Cancel" button.

Addresses #848
Delay autosave and abort on an explicit cancel/save

Use ``setTimeout`` to delay the auto saving of a text assets.
Then cancel a pending auto save if the user clicks the save or
cancel buttons.  This avoids sending multiple requests, or having
to undo a save after clicking cancel.

Update the signature of ``SectionAssetEditView.saveModel()`` to
accept a delay (in milliseconds), and a success callback.  These
are both needed to implement this feature.

Addresses #848
Enable deletion of assets through REST API

This is needed to cover the case where a user creates a new text asset,
leaves the editor, triggering autosave, and later decides to click
the cancel button.

Without calling the ``destroy()`` method on the Backbone model and
deleting the model on the server-side as a result, the model will
still be associated with the story and show up in the asset drawer
when the story is reloaded.

Addresses #848
Destroy asset after disassociating with section

When a user clicks cancel, after a newly-added autosaved asset
has been created, it should be destroyed.  However, this needs
to happen in a callback after the server has successfully
disassociated the asset from the section, otherwise a race condition
occurs and an exception is thrown on the server.

The race condition occurs in
``StoryIndex.asset_relation_update_object``, which gets triggered
when a ``SectionAsset`` model is deleted. The race condition happens
if that method tries to access an asset that has already been deleted.

Update the signature of ``SectionView.removeAsset()`` to allow for
passing a ``success`` callback that will be executed after the
server responds. In ``SectionAssetEditView.cancel()`` use this
callback to inititate the request to remove the asset on the server.

Addresses #848
Fix editor size jumping after resizing

Fix a bug with the auto-expanding rich text editor where it was
shrinking after the user clicked outside the component element.
This was because of a couple of reasons.  First the toolbar was
toggling between shown and hidden states on blur/focus. Second, the
stylehost elements were getting set to the height of the content
and not the height + extra space.

Clean up the way default options and callbacks are handled in
``RichTextEditorMixin.createEditor()`` and add a ``toggleToolbar``
option that, if set to false, will always show the toolbar.

Addresses #844
s/storybase.forms/forms/

Avoid the verbose ``storybase.forms`` in this file because we create
the local variable ``forms`` and initialize it to equal
``storybase.forms`` at the top of the module.
s/storybase.MutexGroupedInputForm/storybase.forms.MutexGroupedInputForm/

For consistency.  Also create a local variable at the top of the
self-executing anonymous function in buider/views.js to make the
following code more compatible with an AMD-based solution if we ever
go that route.
Remove RichTextEditorMixin

This really didn't make sense as a mixin.  Instead, create a new
class, ``storybase.forms.RichTextEditor``, that extends
``wysihtml5.Editor`` but whose contstructor is like the old
``RichTextEditorMixin.createEditor()``.  This is also makes the
the editor more reusable across components, instead of just being
available in the builder.

Also clean up some of the internals for the initialization methods
of the editor.