This macro rounds x to the nearest multiple of step that is not
less than x.
It is typically used for rounding up a pointer to align it or
increasing a buffer to be allocated.
This API is not designed to be generic, and doesn't work in some
cases that are not important for the typical use cases described
above. See CAVEATS.