NH-3489 improve GetEffectiveParameterLocations performance

Added a cache of backtrace-to-location with the `BackTrackCacheParameterList` class, that is used by `SqlCommandImpl`.
`GetEffectiveParameterLocations` stills use the old code if a standard collection is passed for compatibility reasons.

The only public change is SqlCommandImpl.SqlQueryParametersList that now has a return type of `IList` rather than `List`.

A performance test case has been added. A ~40% performance improvement has been measured for the test scenario.