Refine allocators handling of non-default memory spaces.
Refine allocators handling of non-default memory spaces.

The goal of this is to support more sophisticated intra-group
parallelism, where we sling around arrays stored in local memory.

diku-dk/futhark,diku-dk/futhark,diku-dk/futhark,HIPERFIT/futhark,diku-dk/futhark,HIPERFIT/futhark,HIPERFIT/futhark,diku-dk/futhark