Simplify profile switchting implementation

All values used during profile switching
are primitive data types. No need for pointers here,
this only causes an additional indirection for the CPU.

This indirection is also reflected in the code size,
it went down from

   Firmware Size:  [Program: 25870 bytes (78.9%)]  [Data: 1535 bytes (75.0%)] on atmega328p
to
   Firmware Size:  [Program: 22632 bytes (69.1%)]  [Data: 1509 bytes (73.7%)] on atmega328p

Also the values set by the profile are read-mostly,
so even if it would contain strings,
a copy of the values will still be cheaper.