simplify BinaryOperationTranslator

 * Name generation - we cannot use old Dart AST approach (JsScope), because we cannot use string name as key.
 * We must use only variable descriptor as key to distinguish.
 * 1) Kotlin allows block scope, so, we cannot find actual js name by only kotlin string name.
 * 2) Kotlin allows named functions has the same name as variable in the same scope.