Server-side changes for commands.

The server stores the recognized commands in a 'commands' table,
and keeps track of which devices implement which commands in a
'device_has_command' table.

The 'commands' table is initialized when the server is started
by reading the commands.json file.

The server issues a push notification for the device to trigger
a command and saves the context of the command (that is, command and
arguments) in memory waiting for the device to fetch it.

The will device the command ids it supports to the server every time
the app starts up.
Support for commands in the app.