Use the new Cvar API in BaseCommands and Command
Cvar: Implement ROM cvars and misc API changes

ROM cvars are used for communication between the client and the server
or inside the engine: the user cannot change them.
Cvar::SetValue() is a user-level method
Cvar::SetValueForce() is to be used for ROM cvars (and only on ROM cvars)
Cvar::SetValueCProxy() is a temporary function that does change both
cvars so as to not break the C API.
However most user commands have been ported already so it should difficult
for the user to change a ROM cvar by using SetValueCProxy.

Also the additional flags parameter of SetValue has been replaced by
Cvar::AddFlags
Cvar: remove some more trivial proxies/unused code
Fix all warnings in shared and framework (-Wextra -pedantic)
Cvar: show the description in /listCvars and /<cvar>

I wish I had a ColumnFormatter or something
Cmd: Completion returns the value and a description

The description is shown during the autocompletion.
Implemented the descriptions for commands and cvars