implement trackid's and added product+material id bumping tests.

This adds a separate (track) id to resources that tracks as if it were a
pointer to the object instance.  The trackid for a resource object in memory
will not change; unlike the (graph/db) id that changes with any/every
state-changing operation performed on the resource.

also closes #647 and #812