[std] Fix unsigned behavior in some UInt ops

Fixes the division, modulus, and less than/greater than ops for UInt as pointed out in issue #2736. Also adds a test for this issue.

It does not fix all of the mentioned problems -- notably the differences remain with << and >> and comparison of int vs UInt on swf9. I don't think I can disallow Int == UInt in any easy way on the abstract side because it unifies to Int, so the comparison is always allowed.