clang emit a run time overflow on signed integer product in the cas of u...

...nsigned short.

this is a workaround and some added test to see if multiplies properly wraps for unsigned types

I am splitting my preceding pull request as advised by mathias