prepare for allowing key shuffling and default ports
allow for translating keys using a keymap

this permits parsing a url in a consistent way whilst allowing the
translation of array keys (or dsn fields) for conveneient use in
whatever framework will use it