Miscellaneous fixes and enhancements

I use this particular context because the operation doesn't mutate either the receiver or the other, instead it returns a new item.

Read these aloud:

    a.mergeWith(b); // I expect that a now has been merged with b

with:

    c = a.mergedWith(b); // Reads fluently and accurately