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.
what about...

```
 if (_.isString(regionConfig)) {
  return this._buildRegionFromSelector(regionConfig, DefaultRegionClass);
}
..
```

then we can drop the region ivar