Allow multiple structs to be safely allocated

This patch moves 'beenHere' into the instance scope of Struct() as part
of the priv object, so that each Struct() has its own copy of the
variable. Today, all structs could share access to beenHere, so once one
has been allocated the applyClosures() method will never be run for
other structs.