collection of variables for extract method improved
ScalaExtractMethodHandler refactored
ScalaExtractMethodUtils refactored
ScalaVariableData refactored
ReachingDefinitionCollector refactored: get rid of functional type arguments
ControlFlowPolicies added
extract method handler refactored, some cases excluded
ControlFlow: ScTemplateBody inherits ScControlFlowOwner, control flow policies added
ControlFlow: definition instructions for function definitions, collect read/write instructions for open terms in closures
reaching definitions refactored; collect input variables from control flow instructions, so only local variables are collected
tests fixed
sorting input and output variables by start offset
extractor inNameContext added
extract method output refactored,
using class Either instead of pair of options,
tests added
control flow improved, unreachable code inspection added
Merge branch 'extractMethod'

Conflicts:
	src/org/jetbrains/plugins/scala/lang/psi/dataFlow/impl/reachingDefs/ReachingDefintionsCollector.scala
	src/org/jetbrains/plugins/scala/lang/psi/impl/statements/ScFunctionDefinitionImpl.scala