Change the ModuleCache to only take the lock for actual compilation.

Also, once we acquire the lock do a refresh of the cache and try to
pick up modules compiled by others.
That would be possible, but I would rather skip the cleanup entirely when doing the refresh at each node compiled.  There is a full refresh just before each function compilation anyway.