Improve vector freezing and documentation

This makes two improvements in vector freezing and immutability (#368):

- Document that `immutable()` *may* shrink the key domain
- Make `immutable()` on `MutableSparseVector` shrink the key domain to the union of the key sets of the vector and all channels, not just the sparse vector's key set.
- Make `freeze()` retain its current behavior.