Split out object listing into separate object

Let's us vary the implementation from the filegenerator.
URLEncode keys

Botocore's xml parser does not handle control chars properly,
so we need to urlencode the keys in the response so that we're able
to handle them appropriately.

Fixes #675.
Add integ test for removing file with newlines