Fix problems with pq.CopyIn

Here's an attempt at fixing the problem described in #214.  The docs could use some more massaging at least, but I think the technical side should be a bit less broken.  There was also a problem with user-issued rogue COPY messages destroying the protocol state, but I'm not sure I got it completely right yet.

I also tried to make the tests look more like the ones in conn_test.go, probably with varying success.

I'll have to take a closer look at this at a different time, but feel free to criticize before that.