Added simple transient ProtectedRegion functionality

Added transience property to ProtectedRegion as a flag to only be stored in memory and not saved.

The transience check in isDirty() is needed so saveChanges() does not include transient regions.
This is tested and working as expected.
@TomyLobo You are right, it does make it easier to read, and it would make sense to be a guard clause because transience does not indicate a dirty state