A few comments on this approach:

* we can't use the unpickled object in any way, because it has no public attributes, only `raw_data` and `_headers`. We must somehow call `_storeAndUseAttributes` in `__setstate__`
* Creating "dead" objects looks like a very dangerous thing. They are not very useful, and quite error-prone (no method can be called on them). Reviving an object after creation is complicated, because its children should be revived too (recursively) (to be able to do things like `repo=g.load(saved_repo); repo.owner.get_followers()[0].login`)
* Having several load and save methods (on `GithubObject`, `Github`) is error-prone.

Please see commit 3fe9edf for an implementation of my proposal.