* Add IStartupConfigureServicesFilter to wrap ConfigureServices.
* Add IStartupConfigureContainerFilter<TContainerBuilder> to wrap
ConfigureContainer.
* Make StartupLoader build a thunk for configure services that
resolves all instances of IStartupConfigureServicesFilter and
IStartupConfigureContainerFilter<TContainerBuilder> and wraps
invocations to ConfigureServices and ConfigureContainer respectively.
* Refactor building the ConfigureServices callback into a private
builder class due to the increased complexity in the process.
- Remove IStartupLoader and add `IStartup` instead that matches the signature hosting cares about
- Moved `UseStartup` to extension methods
- Move existing logic into `ConventionBasedStartup` class