Boo LINQ implementation

An implementation of compile-time support LINQ, as found in C#.  Consists of two significant changes to the compiler:

 - LINQ syntax: The ability to parse C#-style LINQ query expressions (`from x in myCollection...`) and transform the resulting AST into a method chain
 - Lambda to Expression Tree conversion: When an inline lambda (BlockExpression) is passed to a method that expects a parameter of type `System.Linq.Expressions.Expression<Func<[params]> >` with a compatible signature, the compiler will automatically convert the BlockExpression into the appropriate Expression Tree code.
Perhaps use the relative type names (`Expression` or `Ast.Expression`) instead of the fully qualified name in the following methods