First commit.

API for providers is not finalized.
Still need to add standardized request handlers for providers for ease of
use.
Need to work on cross linking test code.
Need to work out some clunky parts of api for callbacks in providers.
(somewhat very messy).