Configuration Handler

This PR adds support for separate `ConfigurationHandler` classes to be used to manage the settings for Slim.

There is a default `ConfigurationHandler` which takes the previous work of nested keys and allows the handler to manage the keys and values.

Any `ConfigurationHandler`s will need to provide all settings as they currently are (which is `dot.nested.keys` as has always been with Slim), and also provide a `setArray()` method to allow values to be set from a PHP array. How the handler gets the values and does it's magic is completely up to the developer. Fancy using XML files to store configuration? Go ahead.

I have an interface prepared for each class here for when the interfaces branch is ready.