Added optimizer callback wrappers

There is now a *Callback class for all the basic optimization types,
which takes a callable object and calls it when the associated method
is invoked.  This comes in hand for adding handlers that aren't
directly associated with a member (for instance, creativity's handler
for clearing the new books cache): they can now be written as:

    sim->create<interopt::ApplyCallback>([this] {
        ... do something important ...
    });

where previously they required creating an almost empty class.  (The
above pattern fits everything except intraopt::ReoptimizeCallback which
obviously needs to return a bool instead of void).

I deliberately left out intraopt::OptApplyCallback and
intraopt::OptApplyResetCallback classes: supporting multiple callbacks
seems slightly outside the point of these otherwise simply wrappers.