subtract: accept variable number of arguments

If you put this together with the fixed tests from the fix-tests branch, this makes all the test cases pass for the first time.

This means we need to write more tests :P