conn: ensure that callers unblock correctly
conn: ensure that callers unblock correctly

Make the response channel unbuffered so that there is an
explicit synchronisation point between exec() and recv(), this
prevents a case where a timeout could happend and recv() will still
send a response to the waiting response channel even though the caller
is not receving.

In closeWithError if the error is nil dont send it to waiting callers
because they will try to access the response frame, instead close
the quit channel which will indicate the connection has been closed
and should no longer wait for a response.

tempbottle/gocql,ChannelMeter/gocql,adamweiner/gocql,gcnonato/gocql,vrischmann/gocql,i/gocql,nikandfor/gocql,gcnonato/gocql,retailnext/gocql,CrowdSurge/gocql,hackintoshrao/gocql,relops/gocql,gocql/gocql,matope/gocql,mailgun/gocql,retailnext/gocql,gus/gocql,ChannelMeter/gocql,brandscreen/gocql,Zariel/gocql,Zariel/gocql,mondough/gocql,matope/gocql,znly/gocql,mondough/gocql,tempbottle/gocql,tempbottle/gocql,hackintoshrao/gocql,relops/gocql,hackintoshrao/gocql,gcnonato/gocql,kelwang/gocql,relops/gocql,lytics/gocql,CrowdSurge/gocql,znly/gocql,revinate/gocql,nikandfor/gocql,retailnext/gocql,adamweiner/gocql,aai/gocql,lytics/gocql,revinate/gocql,nikandfor/gocql,kelwang/gocql,aai/gocql,mondough/gocql,gus/gocql,brandscreen/gocql,adamweiner/gocql,mailgun/gocql,lytics/gocql,i/gocql,matope/gocql,brandscreen/gocql,gocql/gocql,vrischmann/gocql,kelwang/gocql