Replace ConnectionTimeout with Dial()

A zero ConnectionTimeout prevents DialConfig() from connecting.  Instead
of parameterizing all aspects of establishing a connection, starting
with ConnectionTimeout, inject a `Dial(network, addr string) (net.Conn,
error)` in Config so that the caller can provide a net.Conn.

Touches up some of the documentation of Config.
Merge pull request #99 from streadway/parameterize_dial_without_timeout

Replace ConnectionTimeout with Dial()
Merge remote-tracking branch 'upstream/master' into parameterize_client_properties