The new operator in the snmalloc did not throw exceptions in the case of
allocation failure. Moreover, it was not possible to override the
behaviour of the failure of the new operator using the
std::set_new_handler function.
This PR adds the necessary code to the snmalloc new operator to
throw std::bad_alloc when the allocation fails. It also allows the
std::set_new_handler function to be used to set a custom handler for
allocation failures.