Fix memory leaks.

Thanks to Clang's static analysis...
Virtual destructor to go with virtual method.
Actually check final return value…

Currently, there is no logical difference between the "exit" and "die" paths; we should make one in the future (e.g. report the error in "die").
Avoid over-specifying namespace.

It is good to use the namespace explicitly on implementation functions, but when doing so, the implementation should appear outside of "namespace tesla {}".
Drop unused member variable.

The caller-scope instrumenter doesn't actually need to keep a pointer to the original function: a pointer to the instrumentation function will do.