Correct hoisting behaviour to only evaluate once

The variable hoisting method was not checking if the variable was being
hoisted before evaluating it, which was causing it to be evaluated
twice. Now it is not evaluated during the hoisting phase.
Ensure that inherit is also a valid Grace method

The inheritance method that was generated by the interpreter was just a
regular function, which confused that part inspector of the runtime. Now
the interpreter generates a runtime method with the same parts as the
original method.
SQUASH Prelude