Implement lambda expressions
The implementation deviates from the specification by allowing explicit
and implicit parameters to be mixed for ease of editing. This is still
marked as an error and intentions are provided to convert between the
types. Lambdas can be created and manipulated in various ways:
- An async lambda can be created directly from the substitute menu or
via a left transform on a regular lambda;
- An expression body can always be converted to a block body;
- A block body can be converted to an expression body if it contains
only empty or return statements.
In addition, FormalParameters now have a substitution menu that allows
easy creation from any INonArrayType.