Add Marbles.Transaction mixin

Defers events from firing until after transaction is complete.

i.e. If calling `set` for multiple properties inside a transaction, none
of the change events will fire until the transaction returns.
Update Model: Call parseAttributes inside a transaction

There are often times when I've overridden the parseAttributes method
just to re-order the change events so a listener will have access to the
properties it needs (such as the id).
Allow aborting a transaction

...because it wouldn't be much of one without this ability
Refactor Transaction to allow for async