Actually read the response and parse it, returning a Response.

def _read(self):
    """Actually read the response and parse it, returning a Response."""
    with sw("read_response"):
      with catch_websocket_connection_errors():
        response_str = self._sock.recv()
    if not response_str:
      raise ProtocolError("Got an empty response from SC2.")
    response = sc_pb.Response()
    with sw("parse_response"):
      response.ParseFromString(response_str)
    return response