Use std::shared_ptr for ProcSet closes #31

This had a pretty nasty trick to it, the "delete child;" side effect of clearing the ProcSet and later uses
of the deleted object were affected by the set's emptiness.