Added monitoring methods

I've taken the idea from the Node.js sinon package where functions can be mocked and monitored, enabling simple hooks that let you see the arguments passed to a function, how many times it's been called and any return values - this is an attempt at adding similar functionality to Sub::Override