Refactor buildRegion to simplify building from different regionConfig types

Reopening (originally #1602) against v2.1 per @samccone's request in gitter. This fixes #1562.
@samccone Wrote the spec to test for this, and we're actually catching this at the `Region` constructor level [reference](https://github.com/marionettejs/backbone.marionette/blob/v2.0.2/src/marionette.region.js#L14-L18).  The original intent for this check in `_buildRegionFromObject` was to support the `selector` property if the `el` wasn't supplied.  I think we should leave this as is because if they supplied a bad jQuery selector, then that will fall down to the `Region` constructor and blow up on them anyway.  In other words, if they supplied the `el` to begin with, then they're probably not banking on the `selector` property anyway.  So, if `el` is bad, the constructor will let them know.