Xmalloc: Fail if size == 0

After a discussion with @31415us we propose that `xmalloc` should fail if the size is zero because it is probably a bug. We did not have any real use case where `malloc(0)` was legit. We keep existing behavior for `xrealloc` because there were use cases.