Refactor Archive to be OO and add Documentation

This refactors the Archive package to be Object Oriented instead of just static wrappers of functionality. I've also added the ability to override any particular adapter type with your own implementation if you prefer via the `setAdapter` method.

I've also started the documentation on it, but need to add in how to use `setAdapter`. If you like the way this is going, I'll continue with it.