Made that basic test pass.

This required a thorough spelunking into the cave that is C++ polymorphism.
The gist is that std::vector *hates* polymorphic references.

Of course, rather than settle for doing manual memory management,
considering how `Desktop` objects are shared by both `Change` objects as
well as keys of `ClientModel::m_desktops`, I enabled C++11 build support
and started using `std::shared_ptr`.

I also added a whole slew of utilities which are useful for debugging, and
which were necessary to make the change into pointer land.

Dammit, I wish I was writing this in Python. It pisses me off, sinking
so many hours into this single problem.