alloc optimization and array fixing

Optimized memory allocation locally by moving fillzero routine from
allocation to gc compact. In gc compact it was possible to use better
algorithm.
Also fixed bugs in array split and merge that appeared only if gc
intercepted these routines.