Note: I'm not sure these first two items are necessary

- Improve the error handling (only warn once per call, anyway).

- Benchmark & optimise if necessary
  (i.e. don't get the cx multiple times)


But these two are definitely worth looking into:

- See what happens from FETCH/STORE routines (eek!)

- NUMBER, INTEGER (and STRING?) contexts. This will involve
  constructing a large and tedious table of ops indicating which
  args are treated as which sort of value.
