Refactoring storage for openstack to allow per-provider models

This change introduces the ability to provide a `File` and `Container` model to the files and containers api when mixing in the client functionality.

Thus, the `openstack` provider can use the `openstack` models, and the `rackspace` provider can use the `rackspace` models.

- Fixes #269