Work around a bug in QueryRow

Unfortunately for us, QueryRow ignores errors from the driver's Next,
which in our case means that it will happily return ErrNoRows if a
run-time error happens while processing an extended query.  Syntax
errors are caught earlier and the simpleQuery path catches the error
earlier, so it's possible that there are applications out there which
are affected by the bug, but they just don't know it.

To fix, we wait in Query for the first post-Execute message to arrive
from the server.  If it's an error, we finish the extended query
procedure inside Query, and return the error.  If it's a
CommandComplete or a DataRow (i.e. the query is likely to succeed),
we memorize the message inside the connection, and return a nil
error from Query.  recv1 then returns the saved message on next call,
presumably to either Next or Close.

It is important to keep in mind that this hack only fixes run-time errors
which happen before the server has sent any rows.  While that's a lot
less common than getting an error before any rows are sent, it is still
a valid concern which all clients should be aware of.  The documentation
should probably be improved to make our users more aware of the caveats.

There seem to be multiple instances of this bug being reported against
QueryRow; a very quick scan shows at least #148 and #77, but I'm sure
there are others.  Coincidentally, this also fixes the issue reported
in #139.