force key order
handle default ports in toString
add class method for parsing dsn