CXX-303 clarify initialize() behavior

-Implementation was changed to only allow initialize() to be called once, and to allow shutdown() to only be called once after a call to initialize().
Avoid throwing integers. Use something that derives from std::exception.