Overloaded operators for expression are no longer used internally, instead we construct expressions a bit clumsily.  But it's more like what a (never coming) C version might look like...
ipopt uses interface.R rather than index:new - it's not in the 'core' so it shouldn't have to suffer
mp.lua doesn't use overloaded operators any more
Don't use overloaded operators in pow
add diff to rima.interface
Use scope.index rather than [] in mp.lua
added interface.compile and made solvers.ipopt use it
add interface.mp.constraint and use it
use interface.eval in preference to core.eval where we can
renamed expression:new(op, ...) to op:new{...}
Tidied constraint tests
tidied pow tests
tidied sets tests