Cache the results of asQualifiedName() for performance reasons
Use ScopeUtil.getScopeOwner() for preventing unnecessary stubs to AST switch
Added PyQualifiedReference.isQualified() that potentially doesn't require AST access
Made several internal methods of PyResolveUtil private
Deprecated PyResolveUtil.treeCrawlUp() as a slow way of traversing the PSI

Use PyResolveUtil.scopeCrawlUp() instead, it traverses the tree only once and caches the results.
Cleanup of API for qualified names of expressions

Added PyQualifiedExpression.asQualifiedName() and moved utility
functions to PyPsiUtils. Expression classes can now cache the results
of calculating their qualified names.
Merge branch 'python-performance'