Correctly implement inplace binary operators (for mutable types)

This also expands test_operators to cover more cases, by using programmatic test generation.