add generation of unique abstraction name to extractions

Use the scope of the selected code to generate a unique name for the extracted abstraction.

This moves the responsibility for avoiding name collisions due to extractions from the IDE to scala-refactoring.

This PR eases integration of the extraction refactorings as it ensures that an extraction does not introduce name conflicts. Furthermore, this supports the integration into Scala IDEs quick assist menu.