Tags should not be required for stories
Merge branch 'master' into develop
Use micawber instead of djangoembed

djangoembed has been deprecated and micawber has a cleaner API. Its API
also makes it possible to implement our fake oEmbed providers using the
same API as providers with actual endpoints.

It also uses code to configure the regexps for oEmbed endpoints instead
of Django models, which I like.  I created a custom utility function
to register oEmbed providers for the shortened YouTube URLs and for
Soundcloud.

Closes #226, #220 and #191
Merge branch 'master' into develop
Constrain iframes to width of layout container

Closes #211
Define layout styles using nested rules

I think these are easier and more intuitive to read/maintain than long
CSS selectors.
Merge branch 'hotfix-issue_211' into develop
Clone editor attributes before extending.

_.extend() modifies the target object and returns that object rather
than creating a new object and then extending it.  The previous attributes
were getting clobbered by the later calls to extend.  Calling _.clone()
first fixes this.

Partial fix for #215
Merge branch 'hotfix-issue_215' into develop
Merge branch 'develop' into theme
Merge remote branch 'eric/templatizing' into theme
Lookup section thumbnail views by section cid

Closes #210

Section thumbnails weren't being stored in this._thumbnailViews when
the section was copied from the template.  That's because
this._thumbnailViews was being keyed by section.id, which isn't set
for the template sections because they weren't yet saved.  This fix
uses section.cid as the key for this._thumbnailViews when the section has
not yet been saved.
Merge branch 'hotfix-issue_210' into develop
Add '^' to beginning of URL patterns

Closes #234

Without the leading '^', paths like
/stories/workshop-11-why-do-we-tell-stories/viewer/ were matching the
story detail pattern ('stories/(?P<slug>[0-9a-z-]+)/$') instead of
the viewer one ('stories/(?P<slug>[0-9a-z-]+)/viewer/$).
Merge branch 'hotfix-issue_234' into develop
Re-delegate events on render

Closes #228

The story builder view's element is removed from the DOM when you switch
to any of the other workflow steps.  This causes the event bindings to be
lost.  So, we need to explicitly call delegateEvents().  In the long run
it might be better to just hide the view elements instead of removing them
from the DOM with the call to empty() in AppView.
Merge branch 'hotfix-issue_228' into develop
Avoid console.log/console.debug issues

Closes issue #230

Some browsers don't have a window.console object.  IE9 has a
window.console object, but no debug method.  I used HTML5
Boilerplate's code (in plugins.js) to help with this along with
an extra snippet to pass calls to console.debug to console.log
when console.debug doesn't exist.
Merge branch 'master' into develop
Make Backbone routing work without pushState

Partial fix for #235

IE9 (and likely some other browsers) don't support the pushState API,
so we need to make routing work both for real paths and hash-based paths.

In order to do this, we need to make the story ID work both as part of the
root and as part of the path.  This required defining the routes dynamically
in the router's initialize method instead of declaring them as a property.

As part of this commit, I backported the replacement of
storybase.utils.getValue with _.result from other branches to ease merging.