Refactor configuration to allow modification.

Change IConfiguration to allow modification after the object has been created.

All validation of the config objects type is now done at modification time, as
opposed to at object retrieval time.

As a related change, a Configuration now has default built in objects.

Change-Id: Ie8e160454224e374e1407190a991ebc4ac43d00f
10 files changed