Specify the path for the config file

That information is present in the `aws-cli.pdf` file but not in
the README file.

This commit also adds whitespace in between the paragraph that discusses
the multiple profiles and the paragraph that talks about moving the
config file location.
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 detailed error message on local file encoding errors

The general error was that `list_files` was raising an exception
that would propogate up to the main clidriver handler and stop
execution.  While `list_files` is doing the right thing, there were
a few issues:

* There were no error message logged to the console (bug in log configuration).
* There were debug logs that indicated an error but the error message
  was vague and complained about a UnicodeDecodeError.  It also wasn't
  clear why it happened or how to fix it.

As to why `list_files` is raising an exception:

The issue is with the call `os.listdir(<unicode>)`.  What is *suppose*
to happen in this case is that python should return unicode objects
if called with a unicode object, and should return bytestrings if called
with a bytestring.  So in python2:

    os.listdir(u'.') -> [u'unicode']
    os.listdir('.') -> ['not unicode']

In order to decode the bytes to unicode it uses
`sys.getfilesystemencoding()`.  On Mac/Windows, these values are
hardcoded, but on unix, this is loaded via `nl_langinfo(CODESET)`,
which maps to the `LC_CTYPE` env var.

This is documented here http://docs.python.org/2/library/sys.html#sys.getfilesystemencoding

However, `os.listdir` will return the original bytestring
*if it fails to decode the bytestring* using getfilesystemencoding()`.
The full picture is therefore:

    os.listdir(u'.') -> [u'unicode']
    os.listdir(u'.') -> ['possibly byte string if decoding fails']
    os.listdir('.') -> ['byte string']

Once this happens we're calling `os.path.join(<unicode>, <byestring>)`,
which means we'll need to decode the bytestring to unicode.  In this
situation we use `sys.getdefaultencoding()`, which is likely going to be
ascii, hence the error message about the ascii codec not being able
to decode a byte.

One alternative considered was to just skip the file if we can't decode
the object to unicode.  However, if someone uses the `--delete` flag,
skipping the file will result in the file being deleted on the other
end, which not not desired behavior.

The error message when this happens looks like this:

2013-11-05 18:28:50,195 - awscli.customizations.s3.s3handler - ERROR - Exception caught during task execution:
There was an error trying to decode the the file "\xce\x24" in directory "/home/mydir/sync/bar/": 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)

Please check your locale settings.  The filename was decoded as: ANSI_X3.4-1968
On posix platforms, check the LC_CTYPE environment variable.

Closes #383.
Add tests for new ListCommand

Verify we're only making the minimum required amount of calls.
NUM_THREADS should match max conns in http conn pool

We're using the default value of requests/urllib3 for the
max size of a connection pool, which is 10.  We should match
this value so that we don't cycle through opening/closing connections.

This should have no functional changes.  We're just making less
http connections overall.
Update test_cli to account for py2/py3 differences
Merge branch 'conn-pool-matching' into develop

* conn-pool-matching:
  NUM_THREADS should match max conns in http conn pool
Merge branch 'file-encoding-issues' into develop

* file-encoding-issues:
  Add detailed error message on local file encoding errors
Change directory to location
Merge branch 'mdaniel-readme-config-path' into develop

* mdaniel-readme-config-path:
  Change directory to location
  Specify the path for the config file
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
Update CHANGELOG to reflect latest changes in develop
Create config file with permissions of 0600

When running `aws configure` for the first time, we want
to ensure the file is created with read/write permissions for
only the current user.  This only applies if we create the config
file for the user.
Add debug logs for why we sync a file

Makes it easier to troubleshoot syncing issues.
Only run test on non windows systems
Merge branch 'configure-0600' into develop

* configure-0600:
  Only run test on non windows systems
  Create config file with permissions of 0600
Add a note about aws configure with user has no credentials

This means we have to check for credentials before we call
get_endpoint(), because it can raise an exception about region
not being specified.
Merge branch 'error-msg-config' into develop

* error-msg-config:
  Add a note about aws configure with user has no credentials