Introduce a new type for allocation results
Currently the allocation/move operations workflow return ‘Maybe a’, which is very convenient but loses all details about the failure mode. This patch introduces a new data type which encodes the specific failure mode. It is not yet used correctly (e.g. all node operations result in FailN1), but the workflow is updated. Most of the changes are in the hail/hspace tools, the library code required only trivial adjustments.