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 domenic/sinon-chai#30 and domenic/sinon-chai#38