New animator API.
With this commit comes the notion of animation *scheme*. A scheme provides a
way to start an animation, honoring the user configuration.
Each scheme is a subclass of the abstract class Animate::Scheme, and should be
defined in the Animate namespace. We break the class naming convention, here,
since all schemes have lowercase names; this is because they behave just like
functions for client code (i.e. they are created on the stack, and no member
function is directly called on them).
A scheme must implement the run virtual member function, access user
configuration if necessary, and return an AnimationPtr.