On-Premise Authentication Support

Supports multiple regions and On-Premise Authentication.  Manually merged in kam's changes, did a little refactoring and added specs for coverage.