Configuration API refactor [WIP]

Not ready for merge. Work in progress for all to see.
This merge is strictly defining the Configuration class.

From leankit:
Refactor all of ec-metal's configuration into an API
- config.json will still be an option (implement read)
- env vars included (remove from recipes and attributes)
- config objects will serialze into json for data bags

updating project to use data bag items is out of scope of this branch.
Are we keeping the logic that determines the ami like config gen does now?