Refactor buildRegion to simplify building from different regionConfig types

Reopening (originally #1602) against v2.1 per @samccone's request in gitter. This fixes #1562.
dear code gods

I dislike the complexity in this method

signed you favorite fan

Sam