Fix valgrind invalid reads for list storage
Fix valgrind invalid reads for list storage

There were two issues:

 - In the set method for list storage, when setting an entry to the default
   value, there was no check if that entry was already the default value before
   trying to delete it.

 - In the nm_list_map_merged_stored function, the storage t would be wrapped in
   a RecurseData object on the stack and then freed later, before the
   RecurseData went out of scope and the destructor was called.  The
   RecurseData tries to unregister t in the destructor (it registers it in the
   constructor) after it has already been freed.  This was changed so that the
   RecurseData is just put on the heap -- kind of hackish.  Better solutions
   welcome.

johnmarinelli/nmatrix,janusnic/nmatrix,janusnic/nmatrix,thisMagpie/nmatrix,agisga/nmatrix,agisga/nmatrix,wlevine/nmatrix,wlevine/nmatrix,johnmarinelli/nmatrix,thisMagpie/nmatrix,johnmarinelli/nmatrix,janusnic/nmatrix,agisga/nmatrix,johnmarinelli/nmatrix,janusnic/nmatrix,thisMagpie/nmatrix,agisga/nmatrix,wlevine/nmatrix,thisMagpie/nmatrix,wlevine/nmatrix