Fix pickling

This fixes two issues.

- First, __getinitargs__ does not actually get called for new-style
  classes. Whoops. Only __getstate__ and __setstate__ do. This
  introduces a version of these methods that relies on a new class
  attribute init_arg_names and the existing __getinitargs__ methods
  to provide pickling.

- The default implementation of __getstate__ would pickle up the cached
  hash_value, which will likely be different in a new interpreter.
  Bad idea, fixed as above.