Support __call magic method on objects

This PR allows objects to have a magic __call() method as a catch-all for actions that aren't explicitly defined as methods.

This is a simpler way than my previous PR, which I will close (and Scrutinizer made a very good point which this patch avoids).