Simplifies expandSymbol by mapping symbols' connected components

Uses a quasi-linear, imperative UnionFind (DisjointSet) implementation to
determine the connected components of the graph where nodes are symbols
(initially, allSymbols()) and edges are found through expand().

Absent symbols treatment is essential : not all symbols obtained through
expand() belong to allSymbols().

When we are confident about speed, this should probably be refactored to
remove the previous expandSymbol(), but the current shape of the code
allows easy comparative benchmarking (to get the old version, exercise a
GlobalIndex that mixes in an OverridesInClassHierarchy trait and goes with
the base expandSymbols).

This should not be merged without reviewer's speed benchmarks.
Fixes #1001295.
Adds test suite for UF

refactor UF initialization in GlobalIndexes
introduce modular refactorings
Merge pull request #34 from huitseeker/expansion-speedup

Simplifies expandSymbol by mapping symbols' connected components
Fix some cases where parentheses were printed incorrectly.

Fixes #82.
Revert 99bc01a..b72737a

This rolls back to commit 99bc01af81cdd20ce48ba4c62d0177f04ea17e9f.
introduce visibility scopes
introduce selection expansion extensions
fix expansion of valid selections
fix expansion of method calls
introduce replaceable selections extensions
Fixes issue when building with Maven 3.1 compatibility

Update Tycho version to 0.18.1

See: https://github.com/sculptor/sculptor/issues/41
Merge pull request #35 from timcharper/master

Fixes issue when building with Maven 3.1 compatibility
refine selection extensions
introduce different kinds of visibility scopes
add insertion operations to visibility scopes
introduce superclass for extraction refactorings
introduce ExtractionScopes
don't split block scopes in sub scopes
move insert into scope operations to extraction scopes