Fixed KT-4814: check type when a += b is a = a+b
In cases when a += b is a = a + b, check that (a+b) can be safely casted to a
Assignment operation: plus/plusAssign ambiguity
Do not treat ambiguity between plusAssign and plus operator, preferring first in case of a += b
Assignment operations test fix:
type infered for these vals are MutableIterator, but there is no plus (returning MutableIterator)
nor plusAssign operator for them, so I casted them explicitly to Iterator
Assignment operations test fix:
these methods used in expressions like a = a + b, so they need to return
NotNull when receiver is NotNull
Assignment operations test fix:
x is a byte, x += 2 translated to x = x+2, but type of (x+2) currently
is Int, so it's not compiled because Int can't be stored in Byte.

Maybe we need to think about what should be a result of sum of to
Bytes, but currently it's still Int
Overloaded += and -= for MutableCollection:
Actually this may change the behavior of code in some cases, e.g.
var x = arrayListOf("a")
x += "b" // was the same as x = x + "b"
(created NEW list and concatenated, stored in var, not changed the object)

After my changes x += "b" actually changes the object,
as IMO it's expected to do so.
Assignment operations: added plusAssing for dom.Node