Make serviceFactory::create throw instead of dying for invalid protocols

Currently specifying an non-existing protocol for serviceFactory::create deferences a null shared_ptr, this patch throws an exception instead.