Added a ``--source-region`` parameter.

This parameter ensures the ability to do
trans-region syncs, moves, and copies.  Tests
were expanded as well to better test
handling endpoints.
According to the issue, this redirect error happens every time when there is a dot in the name or the bucket name is not DNS compatible.  So,  I decided to make random url names to satisfy the conditions.  When I tested it, the error does not occur if the bucket name does not have those properties.  The error does happen with the names I generate as shown in the ``testFailWithoutRegion`` test