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.