Added preliminary support for DSN. Refs #4396

@markstory @AD7six thoughts on moving this into a Trait within the Core namespace and also adding it to Cache and Log?

- [x] Cache
- [x] Database
- [x] Email
- [x] Log

this will trip users up if they choose to have any string containing "LOGS" in it that isn't referring to the LOGS constant.

e.g.:

    $dsn = 'Cake\Log\Engine\FileLog://?types=notice,info,debug&file=debug&path=c:\APPLOGS\'

maybe it would be sufficiently defensive to instead use:

    $config['url'] = preg_replace('@\bLOGS\b@', LOGS, $config['url']);

That said, is it a good idea to put in 3.x anything at all that uses these constants in the core, you could just as easily use a path relative to the application root i.e.

    $dsn = 'Cake\Log\Engine\FileLog://?types=notice,info,debug&file=debug&path=logs'