Cosmetic
Remove try/except around encrypted and reduced_redundancy as they have defaults
Remove extraneous existence checks from Matcher.matches
Fix obscure error where changes to one matcher effects them all

The issue was making a matcher in the params for rsync. Made the value
None and instantiated it inside of rsync and all was fine.
Make docstring on file_md5 more accurate
Make key diff return lists instead of sets
Make Matcher attibutes sets instead of lists
Cosmetic
Separate parsing layer from python API

Wanted to separate config parsing from actual interaction with
aws so that I could have flexibility in config files on top of
a fairly sturdy underlying api. In this commit I tried to make
the internal api come into its own. This meant enforcing more
strict adherance to dependancy injection where before there
was a lot of instantiating objects in constructors from config
dicts. Rsync became an object so that Buckets could have a list
of Rsync objects instead of just dicts that are tightly coupled
with the key config spec. Buckets takes on the old delete_keys
method from rsync as it makes more sense to be there. KeyFactory
takes a list of KeyConfigurators instead of a config list as well.
The parsing layer lives entirely in parse.py and handles mapping
the config spec to the underlying api.