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.
Reply from @WeaselSqueezer:
@TomyLobo I think checking !isTransient() && is the same as having the check as its own condition because the check will break if the left condition evaluates to false. However, if it makes more sense or is easier to read, I can change it to be a guard clause as you showed.