Add isEmpty flag for regions. Solves #1920.

Adds an "isEmpty" flag for regions which will prevent the `empty` method from executing a second time if it is already empty. See #1920 for more details.