Fix core unit tests
Use FullName as a key for project cache

Project.UniqueName is null or raises exceptions in some situations.
Project.FullName is much safer to use.

Fix #634.
Try to fix unit test timeout on AppVeyor
Put potentially timed-out tests into a separate category
Merge pull request #635 from dungpa/project-cache

Use Project.FullName as keys in project cache