Chore/gcs impl

This is pull request includes a lot of refactoring and some tests.  The primary goal is to get folders implemented.  Sorry for doing it all in one big PR. The individual commits are too bad, but even those I squashed down from over thirty commits.  I should've been submitting PRs along the way.

@stevesherrie @alex-deaconu  please review