Fix number of API calls used in s3 ls command

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.