Use Enumerator objects to avoid hydrating tons of POROs

This didn't actually improve performance (most of the time spent must be in requesting/downloading the response bodies). Not going to merge, but leaving up here in case it's useful later, especially since this includes an upgrade to AWS SDK 2.0, which provides paginated responses.