Assignment operations fixes (KT-4814)

Fixing of #KT-4814 with cases like: 
val x = 0
x += 1L //represented as x = x + 1L and being compiled without errors.
I added a check that type of (x + 1L) can be stored in variable

Also there are some library and test changes to cope with new changes