n.builtins.Realloc: fixes and handle moveable
n.builtins.Realloc: fixes and handle moveable

Now that we're starting to have sufficient information on how types
want their memory to be managed, we can do a better job in Realloc.

We allow the use of Realloc on non-moveable types as long as it is only
used for pure allocation (from cap 0) or pure deallocation (to cap 0).
It may be better to have other functions with a different name for this
use case.

nanocritical/n,nanocritical/n,nanocritical/n,nanocritical/n