implement "mmtest" from hack-malloc

Major changes:
1. Move slot buffer into stack.
2. I think that allocation of smaller than 256 bytes (1%~2%) of heap size
   has very small probability of failure, so only larger allocations must
   be tested. Size of slots[] is dramatically reduced.
3. Use srand to set a known state of PRNG before generating random data,
   instead of reading state from PRNG. Furthermore, the method lets test
   program be independent of pseudorandom number generator, which can be
   replaced by other algorithm.
4. Stop it when the user sends a keystroke. The malloc/hree history can
   be viewed.
5. All allocated memory will be freed for twice execution.

Issues:
1. mmtest always generates the same sequence of allocations.
2. Direction and some keystrokes that are not supported in current
   -nographic mode break the system.

Remark: This command is thought as one of debug functions, so it appears
        in osdebug.c. To allow potential development of "background"
        execution, I let it have a form of a task callback function.
show a statistic table on mmtest pause

Each line consists of 3 fields:
1. Range of size (both bounds included).
2. Number of successful allocations.
3. Number of failed allocations.
let each mmtest command generate a different result

srand(xTaskGetTickCount()) is like srand(time(NULL)).

Issue: Any idea of implementing clock() or time()?

Reference: aca1c from zzz0072/freertos/master
delete itoa()

It is not a standard function & only appears once at string-util.c. Its
function can be performed using sprintf %d.
rewrite printf's using callback functions

Macro implementation suffers from difficulty of debugging.

Name changes:
PRINTF_BODY -> vprintf_core
_PUTC_ -> _putc_ (callback function)
_PUTS_ -> _puts_ (callback function)