Report script evaluation failures in log and reject messages

It's pretty annoying that master does not give any indication about what failed in a script evaluation when transactions are refused. This adds the script failure reason to the log, the reject messages, and the sendrawtransaction failure string.
Maybe change this to a ScriptError instead of a pointer to one, and add another method to retrieve the value (or make operator() return it too). As CScriptCheck is meant to be an async command object, keeping a pointer around where a result will be written at some point may lead to bugs.