fix a timing issue with dart analysis

@umop

Fix a timing issue with dart analysis and dart project creation. It was possible for analysis contexts to be created at the same time. In these cases, we wouldn't be able to flush the context correctly when the packages directory changed. This CL makes sure that we only create a context once, and wait on its construction properly for the next person that needs to use it. Also, fixed an issue where the outline view was being parsed and created twice per file.


Re removing _contextMap: This would be `return _contextCompleters.remove(project).then((ProjectAnalyzer context) {` ...