initialize attributes before method parameters

this keeps the attribute initialization near the front of the method, so
that it's easier for the peep to find
we can catch this earlier now that we optimize out unused attributes

if pp_init_attr is running, we know that the method body uses this
attribute, so it's safe to die in pp_init_attr if we're calling a class
method. this eliminates a bunch of the magic stuff that was otherwise
necessary
better error messages (#146)