mm: vm: Add segment grow and fix atomicity

Segments can now be grown, but not overlap. This sets the requirement
for some mutexes to be locked. If two segments are grown, in parallel,
this might create a deadlock.

I made an attempt at preventing it, but I'm not too certain on my
successes with that, as there still is space for a dining phylosophers
problem.

If the mutexes are locked too quickly I think this might also deadlock
against a segment removal.

Signed-off-by: Bart Kuivenhoven <bemkuivenhoven@gmail.com>