enhance keymap add array access

Use the keymap for all operations
Make it possible to treat a dsn (when accessed via a wrapper) as an array
add array access to the main dsn instance

it's possible that it will want to be treated as an array, and it's easy
to do
add CakePHP specific wrapper classes
options are optional
add a getter for correct case for engine
add a CakePHP wrapper class for Db dsns
rename dsnKeys

the _uri_ keys are the keys that make up the url
add support for adapters
add getters for logs too
split dynamic functionality out of the wrapper class

maybe that's never needed - it's not required in normal usage
simplify
always attempt to parse the url

that way the url is mandatory but also, if it's borked there's an
exception thrown
don't really need array access

use objects as an object
remove getter and setter tests
don't return, throw
make the use of getter and setter methods more obvious
minor doc updates
rearrange wrapper class

less static functions = win
method order
don't need array access here either