Improve the test StringWeight to make tests less fragile

It was the case that "abc" * "" => "abc ", where "" is 1. This was bad, as it meant that some tests were even more sensitive to iteration order and such.