tweaked Singleton, added support for non-default constructible via
std::forward