Allow messages to be functions

Useful for sinon-chai where the messages passed into assertions messages enumerate calls / arguments to the spy and shouldn't have to unless the assertion actually fails. 
See [issue 30](/domenic/sinon-chai/issues/30) and [issue 38](/domenic/sinon-chai/issues/38)