Distributed Cache & Session

This includes IDistributedCache, a Redis implementation, an MemoryCache implementation.

It also includes Session middleware.

See https://github.com/aspnet/HttpAbstractions/pull/138 for related object model additions.

The goal is to get this reviewed and merged before continuing on with the concurrency work. It's expected that IDistributedCache design will need adjustments at that point, so please focus on the Session API and behaviors for now.
Then perhaps add the exact numbers then, plus an explanation of what it means. E.g.:

```c#
      // byte (1 byte, range 0-255): Serialization revision 
      // umed (3 bytes, range 0-16M): entry count 
     ...
```

Though I'm not sure what `umed` means either - is that some standard terminology?