Introduces Provider as a generic interface, similar to Factory but with less strict contract for what it returns. ThreadToStatementContextProvider is now a Provider of type Statement