TISTUD-6113 Appcelerator Studio: JS library causes Studio to hang during index

It turns out that I don't think this was frozen, just really, really slow. First I updated teh APi to allow cancellation to actually kill the indexing.
Second, I made a modification to cache intermediate model elements - PropertyElements, that we build up to represent JSPropertyCollections. It truned out we kept looking up the same symbol in the scope and re-generating the model for it.

- update API to support passing down IProgressMonitors all through the index/inference process and checking for cancellation so a user can actually cancel a long-running index process (rather than just hope it finishes)
- Cache PropertyElements generated for JSPropertyCollections to avoid a ton of re-calculating inside JSSymbolTypeInferrer#getSymbolPropertyElement(JSPropertyCollection, String, IProgressMonitor).