post-receive hook: fix an exception when the command fails with an error
Problem:
- self.proto.write_sideband is expecting "bytes", but was getting a "str".
- HookError(x) expects a string for a nicer output.
Solution:
Pass a str to HookError (decode the command output),
and then pass bytes to write_sideband (encode it).