DetermineProjectsToInvalidate should still return a list

Otherwiser outer iteration fails
Added lock protection when ensuring configuring collection for VC++ projects
When creating a new project the project is created before the solution

In that case the ActiveConfiguration is null
Removed setting the properties OnAfterBackgroundSolutionLoadComplete

It shouldn't be necessary anymore.
Implemented IDisposable on AsyncLock as requested by Code Analysis
Bump to version 1.0.3