Pickle support

Added testing to verify simple projects can be pickled.

Note: At this time only pickle.HIGHEST_PROTOCOL is supported. To support older protocols, all classes that define __getattr__ or __slots__ need to be updated to include __getdata__ and __setdata__. This requires changes or monkeypatches to construct.