implementation of @nwf's argm idea for backpointers (#29). Uses `$key` instead
of `argm`.

BUGFIX: hash and eq for list wasn't correct.
Merge ../working