Make calls to ProtoBase.__init__ idempotent

Previously they leaked memory. __cinit__ (only ever called once) is now
used to intialize a couple values to NULL. Multiple calls to __init__
(which can happen in weird corner cases) now free any existing C-level
resources before continuing.
Update generated code