More error handling changes at command level

The third commit is the only one that actually has anything in it - the second one reverts the first one.

It looks like some commands are calling the command callback multiple times, so I've restructured the proxyResult function a bit so reject/resolve can only be called once. If the callback is called after that, an error event is emitted, which is now caught by the chain and then emitted at chain level so a logger can listen in - it made more sense to do this than to give the logger access to each command which was what my original idea was.