started provenance tracking

can now attach any arbitrary data we want to variables.

the idea being that the interpreter merges tags in a sensible. more to
come on this.