`is_valid_size` was unnecessary, and thus removed.
Removed WMShared in place of XData.

XData is a more object-oriented interface on top of the Xlib functions
that SmallWM uses, both by providing shortcuts for commonly used
functionality and by encapsulating data like the display and other
trivial things.
Replaced an outdated use of `is_valid_size`.
Automated much of the Makefile.

This probably comes with the consequence that the new Makefile is
exclusive to GNU make, but the new version is more future-proofed, so I
consider this an acceptable compromise.