Fix for Bug 939971 and 934013:

We now support adding await and async to methods for the following cases.

    BadAsyncReturnOperand1
    UnobservedAwaitableExpression
    BadAwaitInNonAsyncMethod
    BadAwaitInNonAsyncVoidMethod
    BadAwaitInNonAsyncMethodOrLambda
    CantAwaitAsyncSub1 (changeset 1300563)
A test case with a very large (machine-generated) source file showed up a CPU bottleneck in FindToken.
The algorithm used a binary search, but each probe of the binary search was a linear search of the children of the candidate node. Essentially making an O(n log n) algorithm.
It was actually worse than that because it had the effect of realizing additional red nodes for probed values during the search.
I optimized it by writing a dedicated "ChildThatContainsPosition" helper in ChildSyntaxList. The algorithm traverses green nodes until it finds one that spans the given position. Then it descends into that node.
In testing, this saved ~5% of CPU time (from 15% of the trace to 10% in "FindTokenInternal") for classification of the giant file.
 (changeset 1300682)
Code review feedback. Mostly places where it looks like simplify/reduce did bad things with extension methods.
***NO_CI***
 (changeset 1300712)
When renaming locals, parameters, private fields, etc, we should not rename comments/strings in files that would otherwise be unaffected by rename.

Also fixing typo in ProjectDependencyGraph.GetProjectsThatDirectlyDependOnThisProject. (changeset 1300742)
Expression Compiler - Bad PDBs

Apparently, System.Collections.Immutable is built with the native compiler, which - apparently - can emit PDBs containing chained forwarding records (i.e. methods pointing to methods, pointing to methods, etc).  Therefore, we need to be resilient against this (though we don't need to consume such chains).

Bonus: I've introduced a mock implementation of the parts of ISymUnmanagedReader used by the CustomDebugInfoReader so that we can more easily test invalid PDBs.

CR: ChuckS, ToMat (changeset 1300840)
Renamed some diagnostic interfaces and their methods, and changed a method signature, to improve comprehensibility.

The specific renamings are:

         ICodeBlockStartedAnalyzer --> ICodeBlockNestedAnalyzerFactory
             OnCodeBlockStarted --> CreateAnalyzerWithinCodeBlock (remove addDiagnostic parameter, change return type to IDiagnosticAnalyzer)

         ICompilationStartedAnalyzer --> ICompilationNestedAnalyzerFactory
             OnCompilationStarted --> CreateAnalyzerWithinCompilation (remove addDiagnostic parameter, change return type to IDiagnosticAnalyzer)

         ICodeBlockEndedAnalyzer --> ICodeBlockAnalyzer
             OnCodeBlockEnd --> AnalyzeCodeBlock

         ICompilationEndedAnalyzer --> ICompilationAnalyzer
             OnCompilationEnded --> AnalyzeCompilation (changeset 1301087)
Refine Expression Compiler Exception Filters

We think Concord may use NotImplementedException for control flow in some circumstances, so we're going to tentatively *not crash* when we see them.  However, we still want to know if we've failed to implement something, so switch all of our to ExceptionUtilities.Unreachable.

Note: ExceptionUtilities.Unreachable is actually a reasonable value since most of the occurrences of NotImplementedException were in Symbol overrides that we specifically skipped because we didn't expect them to be called.

CR: ChuckS, KevinH (changeset 1301397)
added Microsoft Internal only ISupportTelemetry interface

this will be used by microsoft internal teams to mark whether their plugin's information such as diagnostic id is okay to be used for telemetry data or not. (changeset 1301447)
Enable passing test (changeset 1301481)
rollbacked last change.

we decided to do it different way that doesnt require public interface (changeset 1301659)
Fix typo. (changeset 1301710)
529763v2-Return ImmutableArray from region analysis APIs (changeset 1301785)
Fix bug 658329: Throw ArgumentNullException for null arguments to GetChangedSpans and GetChanges. (changeset 1301799)
Eliminate some boxing of ints in PEWriter and Binder "NotFound" (changeset 1302186)
Fix issue where the completion list wasn't displaying the correct list of symbols after a comma in the generic argument list of a reduced extension method.

Class1<string, int>.Create().Test<string,

In this case, the user's partially typed code will parse as a less-than-expression and the comma is parsed as skipped-token-trivia attached to a missing semicolon. It turns out that our current syntactic context checks are permissive enough to allow this case. However, when we check to the SemanticModel.LookupSymbols() to see if there are any symbols with arity that match the identifier to the left (i.e. "Test" in the example above), we didn't specify the "includeReducedExtensionMethods" parameter. The fix is to do exactly that. (changeset 1302205)
Reduce boxing of ints (changeset 1302222)
Remove unused class. (changeset 1302264)
GetCorrespondingBaseListLocation should be able to handle BaseClassWithArguments node. (changeset 1302356)
VB Expression Compiler - Locals - Part 1

1) Improve parsing of generated names.
2) Separate EELocalSymbol and EELocalConstantSymbol (for consistency and space savings).
3) Fix some missing lvalue flags.

TODO: still having some issues with generics.
TODO: static locals.
TODO: port remaining tests. (changeset 1302365)
Rename AsyncHandlerRewriter to be AsyncExceptionHandlerRewriter (changeset 1302421)