rect: Added ctor from a single vec.
rect: Added scalar ctor.
rect, vector: Bashed explicit on ctors.
monitor: Now derives from frame_c.
rect: area().
rect: Implemented empty() in terms of area().
Changed a ton of structs named (.*)_c to &_s.

Haha, I've been caught copy/pasting test fixtures. When I start a new
test module, I often (always?) copy and paste the core of the most recent,
similar test to start. One of the early ones started off as a class, but
then changed to a struct w/o a proper rename, and that propagated...
everywhere.

The naming has been corrected.
wm: First stab at monitor_from_rect.

This needs more tests, but the first one worked as expected.
wm: Added more monitor from rect tests, but they fail intermittently.

We decide which monitor a rect is in based on coverage. The monitor that the rect has
the most area in is the result. In the case of a tie, the first monitor to have the
largest area is chosen, but this is dependent on their order in the container. We're
currently storing the monitors in a set that uses the monitor's address as the key.
The addresses are random, so the results of ties are random.

We have a few options. We can switch to a sequence container, ordered by insert order.
This makes insertion and deletion expensive. Deletion from a sequence container is always
expensive if we're not doling out iterators or indices. Exacerbating things, though, is
that we still have to treat the container as a set. This means we have to check if an
item is already contained for every insert/remove, which, here, requires a linear search
because we have to maintain insert order rather than sorted order.

We could change the rules for a tie. Maybe the monitor closest to the top left wins, but
this is 2d, and that can also tie. We could order by each monitor's top left and return
the lowest in vector order, but this isn't intuitive.

Moving to a quadtree or bsp won't help.

The solution is probably to move to a boost multiindex, with one index in insert sequence
order, another sorted uniquely by address, but this isn't a trivial mod.

I'm going to start with the multiindex. This commit is on a wip branch so I can roll back
if necessary.
cmake: Fixed warnings for clang builds.
clang: Fixed build warnings.
wm: Fixed monitor_from_rect's random test failures.

The fix was to use boost::multiindex to treat the set of monitors as a set
when we need a set and as a vector when we need a vector.

There is a lot of container management here. It should be broken into a
monitors_c class.