Fix custom header support for cp
Modify command equivalent to a self copy to modify metadata
add --files-from=FILE to allow transfer of select files only

This solves the change of behavior introduced by processing
excludes/includes during os.walk(), where previously:

s3cmd sync --exclude='*' --include='*.gpg'

would walk the whole tree and transfer only the files named *.gpg.

Since the change to os.walk(), the exclude '*' matches everything, and
nothing is transferred.

This patch introduces --files-from=FILE to match rsync behaviour,
where the list of files to transfer (local to remote) is taken not
from an os.walk(), but from the explicit list in FILE.

The equivalent for remote to local, and remote to remote, is not yet
implemented.
accept --files-from=- to read from stdin

This allows shell syntax:

find . -name \*.gpg | s3cmd sync --files-from=- src dst

to take the list of files to transfer from stdin.

Be careful, as using with a --delete option will cause files on the
remote side not listed in stdin to be deleted too.
add --files-from to manpage
use --files-from only on local source (not remote, not dest)

The restriction to use --files-from on the source and not the
destination list comes from the equivalent behavior in rsync.

The restriction on not using it for remote sources is only because I
haven't figured out the best way to handle that.  That may be added in
the future.
fix single file sync local2remote traceback, bug #128

Fixes https://github.com/s3tools/s3cmd/issues/128

In the single file transfer case, the remote_list was getting created
as a dict, rather than as a SortedDict as it should be.
sync remote2remote: set target_uri on updated files too, bug 131

fixes bug https://github.com/s3tools/s3cmd/issues/131

We were not setting the target_uri field on files that had changed,
only on files that were to be newly uploaded.  This was causing a
traceback when referencing the target_uri field when copying the
changed file.
Merge pull request #129 from mdomsch/bug/128

fix single file sync local2remote traceback, bug #128
Merge pull request #133 from mdomsch/bug/131

sync remote2remote: set target_uri on updated files too, bug 131
Split md5/hardlink stuff out of SortedDict into FileDict

I should not have overloaded SortedDict with all the md5 and hardlink
tracking stuff which only used by file lists.  There are other uses of
SortedDict elsewhere in the app that need not be cluttered by these
additional features in SortedDict.

Solution: derive new class FileDict from SortedDict, and put the md5
and hardlink tracking code into that.  Then use FileDict instead of
SortedDict where those features are needed.
Add quiet option to silence output on stdout
Replaced mktemp with alternative temp file generation based on secure randoms in order to avoid owner-restricted permission issues with mktemp files
Added cleanup of temp file if error or keyboard interrupt occurs during transfer.
cleanup
Revert "cleanup"

This reverts commit 701a66413d47fc34aec9269dbf0bb19fb28e4359.
Revert "Replaced mktemp with alternative temp file generation based on secure randoms in order to avoid owner-restricted permission issues with mktemp files"

This reverts commit 640a88575a3f637ecdf6b6f677913020129aca04.
Set permission on copied file based on umask.
Updated references to temp file in exception handlers
Merge pull request #136 from tjasond/master

mktemp permission issue, fix