message: schema: Add DeviceClaim/DeviceRelease for connection semantics
  Allows clients to claim/release devices so that other clients can't
  send conflicting commands.
  Fixes
diff: "required": [
  "Id"
  ]
  + },
  + "DeviceIndexMessage" : {
  + "properties": {
  + "Id": {"$ref": "#/components/Id"},
  + "DeviceIndex": { "$ref" : "#/components/DeviceIndex" }
  + },
  + "additionalProperties": false,
  + "minProperties": 2,
  + "maxProperties": 2,
  + "required": [
  + "Id",
  + "DeviceIndex"
  + ]
  }
  },
  "messages": {
  "DeviceRemoved": {
  "type": "object",
  "description": "Notifies client that a device of a certain type has been removed from the server.",
  - "properties": {
  - "Id": {"$ref": "#/components/SystemId"},
  - "DeviceIndex": { "$ref" : "#/components/DeviceIndex" }
  + "anyOf" : [{ "$ref" : "#/components/DeviceIndexMessage" }]
  },
  - "minProperties": 2,
  - "maxProperties": 2,
  - "additionalProperties": false,
  - "required": [
  - "Id",
  - "DeviceIndex"
  - ]
  + "DeviceClaim": {
  + "type": "object",
  + "description": "Sent by client to claim ownership of a device, so that other clients cannot send commands to it.",
  + "anyOf" : [{ "$ref" : "#/components/DeviceIndexMessage" }]
  + },
  + "DeviceRelease": {
  + "type": "object",
  + "description": "Send by client to release ownership of a device.",
  + "anyOf" : [{ "$ref" : "#/components/DeviceIndexMessage" }]
  },
  "RequestDeviceList": {
  "type": "object",
  "DeviceList": {"$ref": "#/messages/DeviceList"},
  "DeviceAdded": {"$ref": "#/messages/DeviceAdded"},
  "DeviceRemoved": {"$ref": "#/messages/DeviceRemoved"},
  + "DeviceClaim": { "$ref": "#/messages/DeviceClaim"},
  + "DeviceRelease": { "$ref": "#/messages/DeviceRelease"},
  "RequestDeviceList": {"$ref": "#/messages/RequestDeviceList"},
  "StopDevice": {"$ref": "#/messages/StopDevice"},
  "StopDevices": {"$ref": "#/messages/StopDevices"},
  