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.
I think this is already handled by `if (!view) { return; }` below?