fixed bug in constraint system

For parameter type T constraint T? <: Int? should NOT transform to T <: Int, it should be T <: Int?
equality constraint T? = Int? should transform to T <: Int? && T >: Int
KT-4009 Unnecessary attempt to do a smart cast causes an error

  #KT-4009 Fixed
  do not add smart casted types for vars to constraint system
refactoring: register type variable together
not one by one
refactoring: moved method
added declared bound constraints directly to constraint system

added status 'hasViolatedUpperBound'
class TypeConstraintsImpl now stores constraint position for each constraint,
so we can filter out bound constraints and find out if the system is successful without them
if some type parameter has only weak constraints (from bounds), then we consider it as unknown
support one more special case of propagating bound constraints

(temporary while there is no common constraint system and its resolution)
try intersection of upper bounds as a suggestion

not each bound itself
while resolving constraint system
rename
TypeConstraints -> TypeBounds
removed ExtendedInferenceErrorData

after 'type bound violated' error had gone to constraint system
removed stored systemWithoutExpectedTypeConstraint

now we can filter out constraints of special type if necessary
refactoring: removed logic of rendering 'expected type mismatch' error from constraint system
todo comment added
refactoring

use method instead of its realisation, inline method
made delegated property resolver a component

from DelegatedPropertyUtils
moved method
resolve delegated expression always using completer
do not add NO_EXPECTED_TYPE as a subtype constraint to constraint system

fixed exception from EA
refactoring: added hasOnlyErrorsFromPosition(ConstraintPosition)
to use it for errors from completer as well
rename: suggestion -> possibleAnswer