Clean the C members of Error in tp_dealloc instead of tp_clear

tp_clear should only be used to break the reference cycles. tp_clear was
causing a segfault because it was called twice (by the gc and by _dealloc) so
self->codec was freed twice.

Amazingly the double free was only causing a segfault on Python 3.3 (released
in late 2012) talking to Postgres 8.1 (released in 2005) in async mode... no
other combination crashed. Thank you buildbot.
Some improvements to connection/cursor GC

Provide a tp_clear, make sure that GC_UnTrack is called before clearing.