[ADD] ipc: the client for the niri socket master
The program changes the outputs only through the niri socket. It does not read the niri configuration file and does not write to it, so a file that a user or a tool such as home-manager controls stays correct. The design follows three properties of the protocol: - One connection accepts many requests, so the client opens one connection and keeps it. - A request for the event stream takes the connection, so the events need a second connection. - The event stream carries no event for a change of the outputs, so a program cannot wait for a monitor to connect. The watcher therefore reads the outputs at a regular time, and it reads them again immediately after any other event. The compositor moves the workspaces when a monitor connects, and that movement gives an event. The regular reading gives the guarantee, and the event gives the speed. The client separates a change that the compositor applied from a change that it kept for an output that is not connected. The second gives no result on the screen, and the interface reports it. The live test drives a running niri instance. It does nothing when the DYNAMONIX_TEST_SOCKET variable is empty, because it changes the outputs.