Remove NoInlining/StackCrawlMarks from Tasks #9342
Addressed PR comment about removing ExecutionContext.Capture(ref StackCrawlMark, ...), which led me to remove NoInlining/StackCrawlMarks from some other places in Timer, Thread, ThreadPool, and Overlapped. In doing so, I found several other unnecessary members on ExecutionContext that could be removed with minor tweaks elsewhere in the source, e.g. - Dispose is a nop, so we can remove explicit try/finally's to clean it up - ExecutionContext.Run(..., bool) just ignores the bool arg, so it can be removed and all call sites redirected (but I've left it in EC, as it appears it's used via internals visible from a library in corefx) - FastCapture() just calls Capture, so the call sites can be changed (but I've left it in EC for a similar reason) - PreAllocatedDefault can be removed in favor of Default; etc. - ExecutionContext.Capture itself checks whether flow is suppressed; doing a check before it adds a TLS lookup and in doing so optimizes for an uncommon case in exchange for making the common case more expensive. I've removed those checks. And in the process, I also noticed that several lazily initialized delegates that no longer need to be, and cleaned those up. These were lazy due to needing to be for security checks that aren't relevant in coreclr.
It was still being used by some other calls in Timer, Overlapped, ThreadPool, and Thread, so I went through and cleaned up those as well, and deleted this Capture overload. As long as I was doing so, I also cleaned up a few other things I noticed along the way.