Use Project.FullName as keys in project cache

Fix #634.

Project.UniqueName is null or raises exceptions in some situations. Consequently, corresponding project providers can't be added to the project list, and Rename Refactoring reports that the renaming symbol isn't found in the project list.

Project.FullName is much safer to use.

I expect the timer will be more responsive and the timeout is less frequent on VS unit tests. I see no harm in adding it (but we should watch out for any issue arisen).