Implement auto-cleanup feature for ptable iterators

Max one PTABLE_ITER_t can be automatically cleaned up on PTABLE_t
cleanup. This is useful for cleaning up during exceptions and this
commit also fixes a potential leak-on-exception in the decoder.

The whole "there's one iterator we'll clean up for you" thing is
a bit dodgy and reeks of the Perl hash "one iterator to rule them all"
design flaw, but anything else would be inefficient and we don't really
need anything else anyway. You can still have an arbitrary number of
iterators, but then you just have to take care of freeing them yourself.
So no harm done.
Somewhat better fuzz testing