mm: Use void * for initializing heap

This makes more sense than uint32_t *
mm: Add magic value and general cleanup

Add a magic value to the buddy node headers that are reversed during an
allocation.  This allows us to catch invalid nodes on free, and even in
the buddy lists, if they somehow got there.

A fair amount of changes have been made simply to make things easier to
read and slightly less hacky.  For example, MM_HEADER_SIZE now actually
uses the size of the header, rather than uint32_t.  A bit of casting
magic has been removed, and areas have been simplified by putting
commonly used values in variables.
Move malloc timestamp definitions to mm_malloc.c

Putting them with the shell program made CONFIG_MM_PROFILING dependent
on the shell.
Add atoi test
Fix atoi edge case of leading '+'
Add atoi test
Fix atoi edge case of leading '+'
Add itoa test
Fix itoa to handle INT_MIN
Simply itoa by calling uitoa
tests: Increase error message length

Until we have snprintf, we need to be careful with these error messages,
as sprintf is used a lot.
Update (u)itoa to accept bases 2 to 36

The length of the buffer is also taken
Add uitoa test, update itoa test for alternative bases
Switch printf %x to uitoa base 16
Remove printx

Nothing uses it, and while fun to read, it isn't particularly useful.
Merge branch 'new-tests'

Conflicts:
	usr/tests/stdlib.c