Use wrapper structs for iterators in `BTreeMap` and `HashMap`

This pull request converts the `Keys` and `Values` iterators of `BTreeMap` and `HashMap` from using type aliases to using wrapper structs as this is a safer solution long-term.
I was conforming to local file style here.  Would you like me to flatten the couple of impl's that look like this just above as well?