[ADD] geom: the geometry of the output space master
The compositor puts every output that it shows in one logical plane. This crate holds the arithmetic of that plane, and the crates above it do not repeat any part of it. The crate gives three groups of operations: - A snap operation moves one area a small distance to align it with the areas near it. A keyboard moves an output in steps, and an exact arrangement is difficult without this help. - The adjacency operations find a space or an overlap between the areas. The compositor accepts the two conditions, and the interface reports them. - The bounding operations give the area that holds all the areas. The map of the monitors needs that area to select a view. The position types and the area types come from the "euclid" crate. A unit type separates the logical values from the physical values. The two differ by the scale factor, and a confusion between them is silent. Every operation is a pure function, and the tests examine the operations with random values. A second snap operation on the same area gives no more movement.