Make some support for writing interceptors for user's functions, without modifying SeeC itself.

Essentially we provide an interceptor function using the same name mangling as SeeC would use, but we must substitute the original for the interceptor ourselves (e.g. by defining the original name to be the intercepted name). The interceptor uses functions in the runtime library to perform checking and recording. SeeC's instrumentation recognises the name mangling and doesn't complain about the function being unhandled.