Drive-by:
- Fix potential race between check and update of throw_one in operator new
- Fix latent bug in operator delete, which shouldn't decrement outstanding_new when passed a null pointer
- Specifically catch the expected bad_alloc in main instead of ...
Why?