Test unit conversion in expressions

This is mostly tested elsewhere, but it's always nice to be complete.
Test more expressions and error propagation

Also, move map_integer to map_natural(), since there was actually no checking going on for negative factorials!