Merge branch 'development' into add-configuration-support
Add a proper design document for configurations.
Inject configurations into everything.

Broke a lot of tests, but we can add those tests back in later.

closes #12
Merge branch 'add-configuration-support' into development