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

> Can you have @ in passwords?

parse_url ([used in parseDsn](https://github.com/cakephp/cakephp/pull/4861/files#diff-393c240fb4b4835bb512134db5d68e49R185)) handles that fine.