Don't run finalizers on shutdown, provide Unloading event
API review: https://github.com/dotnet/corefx/issues/5205
This change implements the proposal in the API review above:
- Don't block threads for shutdown
- Don't run finalizers on shutdown (for both reachable and unreachable objects)
- Provide a public AssemblyLoadContext.Unloading event that can be handled to clean up global resources in an assembly
- As unloading an AssemblyLoadContext is not yet implemented, the event will for the time being be raised shortly prior to shutdown
[tfs-changeset: 1569451]