Azure API refactor

See commit messages for description of changes.
This is a breaking change and will require a minor version bump.

Needs docs (I'll get to it, unless someone else wants to).

cc @indexzero @stammen