Don't return ErrBadConn from Open()

Here's a quick implementation of what I suggested in #244.  I didn't like mixing panics and error return values, so  I (hopefully) got rid of all panics from the connection establishment code.  I'll have to do at least one more pass before even considering committing this, but feel free to bash it in the meanwhile.