fixes #868

Here's the relevant StackOverflow: http://stackoverflow.com/q/5033547/1694

Also, from the SQLAlchemy docs:

```
   :param cascade:
      a comma-separated list of cascade rules which determines how
      Session operations should be "cascaded" from parent to child.
      This defaults to ``False``, which means the default cascade
      should be used.  The default value is ``"save-update, merge"``.
    
      Available cascades are:
    
      * ``save-update`` - cascade the :meth:`.Session.add`
        operation.  This cascade applies both to future and
        past calls to :meth:`.Session.add`,
        meaning new items added to a collection or scalar relationship
        get placed into the same session as that of the parent, and
        also applies to items which have been removed from this
        relationship but are still part of unflushed history.
    
      * ``merge`` - cascade the :meth:`.Session.merge`
        operation
    
      * ``expunge`` - cascade the :meth:`.Session.expunge`
        operation
    
      * ``delete`` - cascade the :meth:`.Session.delete`
        operation
    
      * ``delete-orphan`` - if an item of the child's type is
        detached from its parent, mark it for deletion.
    
        .. versionchanged:: 0.7
            This option does not prevent
            a new instance of the child object from being persisted
            without a parent to start with; to constrain against
            that case, ensure the child's foreign key column(s)
            is configured as NOT NULL
    
      * ``refresh-expire`` - cascade the :meth:`.Session.expire`
        and :meth:`.Session.refresh` operations
    
      * ``all`` - shorthand for "save-update,merge, refresh-expire,
        expunge, delete"
```