Initial version of libgames-scores

Fake pull request for initial review of libgames-scores.

Hint: scroll down towards the bottom to get to the newer comments.
A couple points here:

* When a property `my_property` is backed by a private member variable, we name that variable `_my_property`. It looks like you went to some effort to come up with different names for the member variable than for the property.
* I like to only back properties with private members when actually necessary. Here it would be better and simpler to write `public Category? active_category { get; private set; }`
* This can't actually be public since we don't want it to appear in our API. You can add it to the dialog's constructor instead.