Rename generic parameters K and V to Key and Value

One of the goals for Rust's standard library is to be readable.  In my opinion
terse generic variable names are one of the worst offenders in this regard:
Nobody need argue about the value of good variable names in general, but for
some reason we accept them in generics and lifetimes.

Especially in cases like this, good names are absolutely available, so let's
use them.