Cherry-picked: changed Selection to be a non-generic.

Selection now uses an Any variable. This removes the need for the SelectionType protocol.