Account for lazy inventory regeneration

For last_seen_upstream purposes, an inventory retrieval that picks up a
particularly old inventory creation date should be treated as current as
a point in time shortly prior to the inventory job retrieval request.

See #5 and #6.
Facter out argument parsing
Facter out initialisation

This allows injection of cache and connection for testing purposes.
Access args via self
Allow injection of command line arguments
Add test for upload with '-'
Add test for "vault list"
Add test for "vault create"
Add test for "archive list"
Add test for "archive upload"
Add tests for "archive retrieve"
Add test for "archive delete"
Add Cache database location override
Add --force-ids option to "archive list"
Add helper wrapper glacier-list-duplicates.sh
Handle Vault.retrieve_inventory return type

retrieve_inventory was documented to return a Job object but in fact
returns a job ID string. I see that the documentation has been fixed in
master.

Call vault.get_job to translate the returned string instead. This will
work for versions of boto from before boto was fixed, too.

This fixes a crash with "glacier vault sync --wait".
allow accents in names of files

this will encode name to utf8 before sending
closes: #16
change --convert-utf8 to --transcode-names=CODEC

which is more flexible and allow user to decide which codec will be used to encode characters with ord() > 125