ugtrain: enhance stack offset discovery

The discovered new stack offset is now written back to the
in-memory config. After discovery it is checked if all memory
objects could be discovered.

Note: There is still the limitation that libmemdisc can only
discover one memory object at once.
fix the license headers
libmemdisc: determine heap start

We've noticed that the heap address filter became useless with heap
randomization activated in the kernel.
We can do against this the same thing as what we do against stack
randomization: Using offsets. But we start with determining the
heap start. Using a malloc before everything else does the trick.