Major refactor. Moving all rollback/restore/undo handling code outside of the preview applier and into the action handlers for each type - so essentially each handler is reponsible for dictating how it's rolled back. Also adding a dynamic handler registry. - This all has the benefit of allowing plugins to not only record custom events, but to supply a handler for them as well. This means they can use custom data objects like we do, they can supply logic to handle rollbacks/restores - essentially allowing any plugin to have any of their custom events actually able to rollback. bug 392