Do not rely on Caml comparison for different value types.

The current LambdaS5 implementation of operators relies on Caml implementation of comparison between different constructors, which makes the language highly implementation-dependant.

I think it is best to only allow it for numbers.
I also added support for undefined, as LambdaJS needs it (e.g. in `%ArrayConstructor`)