Implemented follow-symlinks feature for S3.

Added unit and integration tests along with PEP8 reformatting for
the entire file.

Fixes:
#453
#781
Yeah, I have been thinking about this as well.  The current implementation skips broken symbolic links via the ``os.path.exists()`` call in ``check_ignore_file()`` just so the whole process does not fail if it tried to read a bad symlink for now. The RC code currently only returns 0 (success) or 1 (fail) based on how many operations failed right?  So we could add another feature that both generates a RC based on the result (i.e. success, warning, failure) and prints out at the end a particular warning, the cause of the warning, and what file caused the warning.  This would be useful for future fixes like handling socket files, pipe file, etc.  Thoughts?