Hide the destructor implementations & add table interface.

Table interface will be used to resolve table references.
Make get_session_handler() an optional virtual method.

The client code doesn't need to implement this interface if it doesn't
wish to support session_handler.

And add interface.cpp which I forgot to add in the last commit.
Make get_session_handler() a non-const method.

Since it returns a non-const pointer which may point to the internal
state of the model context.
function_objects.hpp header is an implementation detail.  Hide it.