Refactor buildRegion to simplify building from different regionConfig types

Per my findings in bug #1562, this would be a possible refactored solution to `Region.buildRegion`.  I've changed the specs that use `exist` to `deep.equal` and added a test to show the case that would break under the current implementation of `Region.buildRegion`.  Let me know what you guys think about this solution.  If it's too much, then the simpler proposed solution in #1562 should work fine.  It will just require bumping maxcomplexity by one.