Atomspace conversion to shared pointers

This is a large batch of changes that change how the atomspace manages memory. It is not all done with the std::shared_ptr object.  This lays the groundwork for the next set of changes, which will be focused on improving performance by removing un-needed code.