Add support to list_bucket for paging

Previously list_bucket could only return the first 1000 keys in a bucket. Now
list_bucket is a generator and automatically handles fetching more keys. To make
this change Connection's make_request method had to be modified to allow dicts
as the `params` parameter (whereas previously it only accepted strings). Also
in this commit, plenty of cosmetic changes. I would feel bad but it's only me
right now...