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?
We commonly set the default argument value to null and then check for `$config === null` for usage as a getter.