[guilib] adds non-const version of GetControl
[settings] use dynamic_cast<> to upcast to known control types and check NULL

Fixes crash in older skins not adapted to the settings changes.
[guilib] use dynamic_cast<> when copying controls of a specific type
[guilib] use dynamic_cast for upcasting where needed rather than c-style casts
[guilib] remove a bunch of unneeded c-style casts
[guilib] make use of SET_CONTROL_SELECTED macro