Use AtomPtr for all atom pointers
Most of the rest of the AtomPtr conversion
Remainder of AtomPtr conversion
misc minor cleanup
Add scheme version of test file
Fix recursive destruction when using shared_ptr

The destructor is triggered by removal from TLB, so removing it from
TLB during desctruciton is an inf loop.
Assorted minor AtomTable cleanup

Since the memory is automatically managed, some of the memory
management routines are no longer needed.
Add mutex locks to TLB

Actually, my future plans are to entirely remove the TLB ...
but for now, just lock it.
Bug fix: cannot cast this to shared_ptr

what was I thinking?
Fix atom removal bug

Removing atoms will have the unwanted side-effect of deleting them.
To avoid this, its best to keep pointers of them around.
bug fix: cannot access atom after removal.

The atoms not in the atom tble any more, so can't just get
it from the atom table!  Duhhhh
bugfix: cannot reference shared_ptr(this)

Can't do it during destruction, and can't do it with shared_from_this()
either. Not during destruction.
Bug fix: cannot access removed atoms

If an atom has been removed from the atom table ... its been removed.
Don't keep pretending like its still there, and using it as normal.
bug fixes: more fallout from atom removal.

Cannot access an atom through the atom space once the atom
has been removed.  I'm a little concerned that the time server
and the space server might still be trying to do this, though :-(
Bug fix: broken default for recursive remove flag.

You can't remove an atom when its parentts are in the atomspace! Duhhh
Python: Prevent crash on finalization
Bug fix: remove atoms correctly
bug fix: cannot use atomtable after atom removed

This seems to be the last one ... again, cod that tried to use
the atomspace for an atom that was already removed from the atomspace.
Bad code.  Baaad.
bug fix: remove use of obsolete function