When I set `path` in ServiceConfig or `contextpath` in ProtocolConfig, RestProtocol throws NPE on this line:
https://github.com/apache/incubator-dubbo/blob/master/dubbo-rpc/dubbo-rpc-rest/src/main/java/org/apache/dubbo/rpc/protocol/rest/RestProtocol.java#L93
```java
Class implClass = ApplicationModel.getProviderModel(url.getServiceKey()).getServiceInstance().getClass();
```

<dubbo:service path="test" interface="org.apache.dubbo.samples.rest.api.facade.UserRestService" ref="userRestService"
                   protocol="rest" validation="true"/>

This is because we use `group/interface:version` as the key when putting ProviderModel:
```java
Application.initProviderModel(group/interface:version, providerModel)
```
but use `group/path:version` to get, as showed above.

I think to unify to `path` would solve this problem.

@Test
    public void testNettyServer() {
        DemoService server = new DemoServiceImpl();
        ProviderModel providerModel = new ProviderModel(exportUrl.getServiceKey(), server, DemoService.class);
        ApplicationModel.initProviderModel(exportUrl.getServiceKey(), providerModel);
        URL nettyUrl = exportUrl.addParameter(Constants.SERVER_KEY, "netty");
        Exporter<DemoService> exporter = protocol.export(proxy.getInvoker(new DemoServiceImpl(), DemoService.class, nettyUrl));
        DemoService demoService = this.proxy.getProxy(protocol.refer(DemoService.class, nettyUrl));
        Integer echoString = demoService.hello(10, 10);
        assertThat(echoString, is(20));
        exporter.unexport();
    }
    @Test
    public void testServletWithoutWebConfig() {
        Assertions.assertThrows(RpcException.class, () -> {
            DemoService server = new DemoServiceImpl();
            ProviderModel providerModel = new ProviderModel(exportUrl.getServiceKey(), server, DemoService.class);
            ApplicationModel.initProviderModel(exportUrl.getServiceKey(), providerModel);
            URL servletUrl = exportUrl.addParameter(Constants.SERVER_KEY, "servlet");
            protocol.export(proxy.getInvoker(server, DemoService.class, servletUrl));
        });
    }
    @Test
    public void testErrorHandler() {
        Assertions.assertThrows(RpcException.class, () -> {
            DemoService server = new DemoServiceImpl();
            ProviderModel providerModel = new ProviderModel(exportUrl.getServiceKey(), server, DemoService.class);
            ApplicationModel.initProviderModel(exportUrl.getServiceKey(), providerModel);
            URL nettyUrl = exportUrl.addParameter(Constants.SERVER_KEY, "netty");
            Exporter<DemoService> exporter = protocol.export(proxy.getInvoker(server, DemoService.class, nettyUrl));