Mop up some UI code

Simplifying the logic for special-casing singleplayer.  Some UI controls should
not be visible in skirmish mode. Previously, CreateUI() would conditionally
create those controls and then code that refers to those would have to keep
checking if the UI element they want to play with exists.  With this patch, we
unconditionally create UI controls but conditionally *show* them. This looks no
different, but means we can optimise away a large amount of rage-inducing "if
GUI.something then..." checks.

This patch also makes the creation of label textfields less repetative by
moving the SetDropShadow call into the UIUtils utility function (and in some
cases optimising away redundant explicit calls to SetFont/SetText immediately
following CreateText (which alrady supports setting both of these things)).
Simplify ping-colouring logic
Remove code duplicated in a botched merge
Simplify skinning logic

Closes #242