Send watch notification when a task doesn't exist

This involved fixing request/response pairing in general because
SendSyntheticValueChanged can result in multiple kinds of response,
which we didn't have a way to handle in the existing code.

sort of an orthogonal issue, I guess - that would be a change to the types in Protocol.scala, I wouldn't mix it into the commit here. The existing SbtClient code had an implicit keyed on Request already, it was just that the implicit was the wrong thing (the implicit provided a serial-to-handler map, but instead we should have a single serial-to-handler map and then look up the proper handler via implicit). Automatically inferring response type from request would be a logically separate task.