Move the 'ls' command into a separate Command object

This fixes issue #439.  The bigger change here is that
I'm starting to break up the commands to not go through
the same generic processing.  There are certainly commands
that have *some* similarity, but not all commands are the same.

Particularly commands like `ls`, `mb`, `rb` can be pulled out
into their own subclasses with their own logic.
Remove banners from s3 ls command
Remove mentions of ls in main subcommand
Add tests for new ListCommand

Verify we're only making the minimum required amount of calls.
Update test_cli to account for py2/py3 differences
Merge branch 's3-ls-permissions' into develop

* s3-ls-permissions:
  Update test_cli to account for py2/py3 differences
  Add tests for new ListCommand
  Remove mentions of ls in main subcommand
  Remove banners from s3 ls command
  Move the 'ls' command into a separate Command object