Adds version in CompatibilityVerifierProperties and reflection check in SpringBootVersionVerifier
Also removes all reflection checks prior to 2.4 since they no longer apply.
Fixes gh-896
If user was using boot 2.4 with Hoxton, the manifest check would return false, then try the reflection based predicates which would match 2.3 since the 2.3 predicate still holds true in 2.4
Fixes gh-895
FluxFirstNonEmptyEmitting and Tests used package private classes/interfaces from reactor. These were replaced with the public interfaces they were extending and any default methods copied to the implementation.
LambdaSubscriber was copied to the test where it was used and had similar treatment for its package protected interfaces.
Fixes gh-887
* Add stats lifecycle bean. Add onStartRequest method to LoadBalancerLifecycle. Add loadbalancer.Request field to CompletionContext.
* Add TimedRequestContext interface. Make RetryableRequestContext extend RequestDataContext. Improve generating metrics. Add utility class for working with tags. Ensure tags are not null.
* Add separate meters depending on CompletionContext.Status.
* Modify registered metrics. Add adapter for BlockingLoadBalancerClient requests. Add autoconfiguration.
* Make new config conditional on MeterRegistry class.
* Rename lifecycle bean. Do not log request if 0 timestamp.
* Fix onStartRequest call arguments for BlockingLoadBalancerClient.
* Fix onStartRequest and onComplete calls for RetryLoadBalancerInterceptor.
* Only register timed request once. Add tests.
* Adjust tags logic. Add more tests.
* Add more tests.
* Refactor. Add javadocs.
* Refactor.
* Refactor.
* Retrieve client response data if possible in BlockingLoadBalancerClient.
* Refactor.
* Fix docs after review.
* Make previousServiceInstanceMutable.
* Change argument order for CompletionContext constructors. Remove duplicated start time setting.
* Add HttpServerRequest-based constructor to RequestData. Add HttpServerResponse-based constructor to ResponseData.
* Also get request cookies from headers.
* Handle cookie pattern not found.
* Fix adding cookie.
* Implement retry logic.
* Fix retrying on next instance when RetryExhausted in same instance.
* Fix retrying on next instance when RetryExhausted in same instance.
* Fix retrying on next instance when RetryExhausted in same instance.
* Move duplicated methods to utility class. Fix checkstyle.
* Fix test.
* Add more tests.
* Fix test.
* Add autoConfiguration.
* Refactor and add javadocs.
* Add javadocs.
* Use RetryAwareServiceInstanceListSupplier with reactive retries.
* Update properties.
* Fix the docs.
* Rename utility class.
* Verify interactions in order.