Make sure that iconsets used as part of a theme do *not* override
anything already existing inside the theme.
Only iconsets that are manually specified can override settings in the
theme now (because those, you typically specify on the CLI).
TODO: Write unit test for this
fixes#666
* First, make iconsets override anything already present in the "base"
configuration
* Second, make sure that CLI provided iconsets have higher priority than
"built-in" ones
see #648
Previous code accepted the "first" hit in a theme - particularly, if a
module is called "A" and a *different* module "B" uses "A" as state, a
widget of module B with state A would be themed as *module* A, wrongly.
Essentially, made sure that the last (most specific) themeing "wins".
fixes#647
the "merge" algorithm only fills in missing elements - i.e. the most
important pieces of a data structure must be filled in first. since the
iconset specified on the CLI takes precedence over anything present in
the config, load the CLI-provided iconset *first*.
hopefully fixes#634
OK - so I have to admit I *hate* the fact that PIP seems to require a
subdirectory named like the library.
But since the PIP package is something really nifty to have (thanks to
@tony again!!!), I updated the codebase to hopefully conform with what
PIP expects. Testruns so far look promising...