Call and use ConfigureServices if exists

Currently only looks for signatures like this:

public [static] void ConfigureServices(IServiceCollection services, ...)

Will add support for more overloads like one that returns a IServiceProvider next
Added tests for a few different environments, a static version of ConfigureServices, and verified that Options don't get added if ConfigureServices are not called