Add basic ownership dialect

This dialect implements a rudimentary ownership system where the
only owner is the immediately-surrounding object. It demonstrates
the use of the dialect dialect to implement checkers requiring
state to be maintained for expressions.
Fix parser crash in TTIAR suggestion

Previously, when two terms appeared in a row the parser tried to
generate a suggestion using a method that doesn't exist because of a
duplicated method part.
Add object annotations to JS backend

Object annotations and reflection are now available in JavaScript.
This commit also tidies up leaky variables in the other Mirror methods.