RoslynAssemblyLoader loads assembly multiple times when concurrently
invoked

The call to CompileInMemory produces a new assembly for the assembly name
every time it is invoked. Consequently when it's invoked concurrently, we
end up with two assemblies that represent two instances of the same
source.

We'll prevent this by preventing concurrent calls to IAssemblyLoader.Load
from the bootstrapper