Minor reorganization.
Refactored key handlers.
Made the logic more modular, hopefully easier to follow,
and removed repeated code.
Plus, some optimization in RichString code.
Another portability tweak.
show units with "i" to indicate binary base
use define for const values
move defines to a central place
make units more dynamic and automatically switch between [kMGT]iB

Some examples of before and after, this applies for Swap- and
MemoryMeter:

622/7770MiB
622.7MiB/7.8GiB

0/2048MiB
420kiB/2.0GiB

555/131072MiB
555.8MiB/128.0GiB

442368/1048576MiB
432GiB/1.0TiB
calculate human readable output in loop and use dynamic pricision length