convert as many "enum" as possible to "enum class", and make them ": char" in the due course #6

Follow up of PR #914, #927, #935, #936 and #946
Several enum types are "enum class" (i.e. typesafe C++ enums), several others are not.
Also making them ": char" should reduce the size of structures using them.

Some (at least those used in Q_ENUMS()) need to get moved inside a class, in order to be available to the plugin framework.
And simplify some ot the enum names to not have the class names as part of the enum Name.