Fixed a bug where bound formal parameters were not correctly substituted into matching applications

The following code exhibits this bug:

div = {}
div <- {
    [@quot, [@numerator, unknown]]: [@numerator.div[@quot]]
    [@quot, [unknown, @denominator]]: [@quot.times[@denominator]]
}

times = {
    [@n, div[@d, @n]]: @d
}

times[2, 3]
Fixed the return value of inheritance assignment

`a << b` now returns `a` rather than `b`.