Implemented follow-symlinks feature for S3.

Added unit and integration tests along with PEP8 reformatting for
the entire file.

Fixes:
#453
#781
Not sure if we can always count on the invariant that os.path.isdir(path) will always end with a trailing slash.  I think it would be safer to also check this condition: `if os.path.isdir(path) and path.endswith(os.sep):`