Cast lvalues to rvalue type during most comparison operations

This leads to better numeric and date comparisons, since we are comparing
actual types and not strings.
oh now i get, it, there is no old string formatting, the string is returned with the '%s' inside maybe to be used by another method down the stack.