Add ability to use __getnewargs__ from protocol 2
Merge pull request #79 from marcintustin/master

Add ability to use __getnewargs__ from protocol 2

Signed-off-by: David Aguilar <davvid@gmail.com>
tags: alphabetize to minimize potential merge conflicts

Signed-off-by: David Aguilar <davvid@gmail.com>
pickle v2: improve handling for object references

We now allow Pickle Protocol v2 __getnewargs__() to contain
references.

The unpickler uses a new strategy for handling references.
It now places Proxy objects into the referencing machinery
to break dependencies between construction arguments and
parent objects.

A final sweep is done at the end of restore() to swap proxies
for their real instances.  This allows for proper referencing
within objects returned by __getnewargs__().

Related-to: #78
Signed-off-by: David Aguilar <davvid@gmail.com>