ConnectionTimeout work

Use the Dns.BeginGetHostName() so we can respect ConnectionTimeout.
Keep track of how much time is left to connect so that multiple timeout-able calls will not cause it to be exceeded.
On timeouts, throw TimeoutException.
Removed ResolveIPHost() as it's called only from one spot.
Added a new dns timeout message to NpgsqlState.resx; not localized.