Switch to proper merging of no_nul annotation, and fix translation

This configures the translator to return `SomeString()` for `union(SomeString(no_nul=True), SomeString())`, instead of `SomeString(no_nul=True)`.

I have fixed the translation errors that then happened by comparing MRI behaviour.