Monetary nodes should ignore nil values

All the other nodes accept nil values and pass them through. Monetary nodes
were choking when trying to sprintf a nil. This fixes that.
I appreciate we may not go this way for the test fixes, but we should probably not blow up in `sprintf` if someone passes a nil in anyway, would it be worth casting to an int here as that's what we expect?

Either `Integer(value) == 0` or `value.to_i == 0` perhaps? The first will throw a TypeError if it can't coerce to an integer, the second will return 0 for nil/empty string and extract number from string if it can otherwise.