Cleanup the README text
Make result type of excl exl not nullable in complete phase
Changed file extension to '.kt'
 to preserve file history
Converted ConstraintSystem to Kotlin
Rewritten ConstraintPosition to Kotlin

Added ConstraintPositionKind
 (to be able to use enum constants from Java code)
Small refactoring in ConstraintSystemImpl
Extracted isMyTypeVariable, getMyTypeVariable
Fixes after merge

Added platform types fixes to rewritten to kotlin files
Rename: MyDeclarations -> ConstraintSystemTestData

Simplified code (used 'firstOrNull')
Added captured types and approximation

CapturedType captures type projection while solving the constraint system.
During the substitution type containing captured types is approximated
to get rid of captured types and (for simple cases) replace them with corresponding type projections.

Note that Array<Array< CapturedType(out Int) >> is (over)approximated by Array<out<Array<out Int>>

See 'Mixed-site variance' by Ross Tate for details.

 #KT-2570 Fixed
 #KT-2872 Fixed
 #KT-3213 Fixed
Capture types only on the top level
Refactoring: made code in 'processDeclaredBoundConstraints' more kotlin
KT-6320 AssertionError in ConstraintSystem(The constraint shouldn't contain different type variables on both sides: Y <: X)
  #KT-6320 Fixed
Don't add a constraint T <: DONT_CARE from upper bounds
Added description of 'FILE' directive for diagnostic tests
Preserve nullability while substituting captured types