Background savepoints

This adds savepoints to django models (kind of like reverting transactions) to revert changes after scenarios, rather than fully recreating data every time.