moves tpe pickling into every case of a tag.key match

if a performance regression exists, it's negligible. on travInt,
I've been getting 92-96 for this commit's parent and 95-99 for the commit
itself. on evactor2 there was no difference.
loops in object graphs: step 1

notes:
1) always keeps track of picklees and unpicklees being processed
2) i.e. there's no Refs/NoRefs switch implemented yet
3) does NOT pickle object ids, as it's unnecessary (see comments)