Port MDB_LAST workaround from cffi.
Invalidation round #2.. needs more work

* Introduce dual lists for object children and siblings.
* Split dealloc functions out into tp_clear and tp_dealloc
* Simplify iterators a bit more.
* Add some more missing invalid checks.
* Stop using PyArg_ParseTupleAndKeywords in places (it's duplicating
  strings internally)

Need to cleanup/ensure the _clear/_dealloc functions behave in all
cases, and that all method access is protected.