Connection string builder

Francisco,

I was having trouble with Npgsql's ability to try protocol version 3, and then fall back to version 2, since NpgsqlConnectionStringBuilder defaulted to version 3.  I changed ConnectionStringBuilder to work properly here, and wound up reimplementing Cache, as well as adding a constructor to NpgsqlConnection.

So now, Npgsql once again attempts to automatically fall back to version 2 even when using ConnectionStringBuilder to set up the connection.  However, it's broken in another way as well, which I have fixed in another branch and will PR shortly.

-Glen