Add a constructor to Dsn that take a URI

Add a constructor the Dsn that takes a URI.

This change also removes some fields of the Dsn class
that are redundant, and add a final specifier to any
fields that can be.
Will do, I was trying to not change _everything_ all at once :)