Don't set self.string or self.stream = nil in dealloc if they are
already nil.

There are custom setters in PKReader that assert that the counterpart field
is nil.  This means that we're guaranteed to assert if PKTokenizer.dealloc
is ever called because one or other of these fields will be set during init.

I don't understand why I'm the only one who's hitting this.  Is no-one
else freeing their parsers?
Make it possible for a PKParser subclass to use ARC.

To do this, all the references to self inside blocks need to be
weak, otherwise nothing gets freed.

This has been implemented with a couple of macros that take different
values depending on whether the code is compiled with ARC.
All references to self that would appear inside a block (i.e.
just about any of the templated fragments) need to use PKParser_weakSelf
instead of self, and each of the method templates needs to include
PKParser_weakSelfDecl.

Note that the subclass needs to be compiled with -fobjc-arc-exceptions
to avoid leaks, because PKParser uses exceptions for control flow heavily.
Regenerate all the parsers following the previous cset.
Make the PKParser.parse call obey self.startRuleName when it comes
to starting the parse.

This allows the caller to specify a non-default startRuleName before
parsing so that the parse starts with the specified non-terminal
(e.g. for testing).

This is implemented using a new template PGDynamicMethodCallTemplate.txt.
This calls the selector dynamically if its name has been specified,
otherwise it falls back to a default call.
Regenerate all the parsers following the previous cset.