Prevent self-recursive instantiation from leading to invalid substitution of type arguments
Take first step towards addressing over-instantiation of generic signatures
Prevent type argument condensation from producing infinitely expanding types
Add comments
Clean up variable names
Fix logic around member checking between bases
jake baseline-accept can be soft or hard
Only perform incremental parsing on changes to open files.

This is important as hosts commonly have different representations for open
and closed files.  Our syntax trees end up pointing back into the host to
be able to retrieve data (like token text).  We don't want our trees to hold
host data alive unnecessarily.  So, for example, when a file changes from
open to closed, we don't want to keep the open file data around (in VS this
can end up holding a lot of objects around).  Similarly, when a file changes
from closed to open, we don't want to keep around the buffer representing the
closed file on disk now that the host has transitioned to the buffer with the
open contents.
Update LKG.
Signatures are already added to the comparison cache as soon as we perform a relationship check, so in the contextual instantiation case we need to be careful not to check if the signatures in question are both root signatures.
(If they are, then checking the comparison cache for thier prescence will result in a false-positive.)
More fixes to signature relationship checking
Remove unnecessary subclassing.
Remove unnecessary subclassing.
Module references should match the grammar.
Remove unnecessary method.
Hide 'value' behind an accessor.
Don't reuse a node to store the block or expression of a lambda.
Coverage.
Simplify resolution of return statements.
Extract out the code for resolving the expression of a return statement.