Various speed improvements

* Use collections.deque rather than list for the row cache. We're adding
  to one end and removing from the other. This is O(n) for a list but
  O(1) for a deque.

* Find the conversion function and do the format code check in the
  ROW_DESCRIPTION handler, rather than every time in the ROW_DATA
  handler.

* Return 7 columns in performance.py rather than just 1. I think this is
  more reflective of general use.

* Use the 'unpack_from' form of struct, when unpacking the data row,
  so we don't have to slice the data.

* pg_types conversion functions don't need client_encoding and
  integer_datetimes passed to them each time, as functions using them
  are created with the connection.