Make the way configurable how hosting is kept alive

I'm currently trying to host on Linux and integrated into systemd as init system. The fixed default of Console.ReadLine() to keep the hosting running does not work well and I would like to change this in my application so I can react properly to SIGTERM on Linux. This PR adds an interface and the current default implementation to Hosting.

Within a web application, this default can be overridden by
```csharp
services.AddInstance<IHostingKeepAlive>(new MyHostingKeepAlive());
```