Restructure and simplify batch initialization
Now that batches always have contiguous memory, the allocate and deallocate routines are made private and there are now two kinds of initialization routines: either passing all bounds and the batch allocates the memory or passing a pointer to memory that was allocated before. This allows simplifying some of the logics, such as removing the (de)allocate_temporary routines.
- I have checked that my code follows the Octopus coding standards
- I have added tests for all the new features added in this request.