Move some useful methods from AliasableEvalFunc to a new base class

Being able to store arbitrary data in the context properties is useful.