First set of work on the RedisProvider for EF

Supports insert, update and delete but not query yet.

Various tests added - more to come.
I think we should be pipe-lining in this method. To do that, don't await each async call, but instead, stash the tasks and then use Task.WhenAll to await all of them.