Make Selection widgets respect values order.

This PR suggests an alternative method for storing selection widget state in the backend.  Instead of the primary store being a dictionary, a tuple of tuples is used. i.e. ((k1, v1), (k2, v2), (k3, v3), ...)

@rmenegaux and @jasongrout

should all of these alias keys pointing to the same data be public? Maybe only one or two, and make the others `_private`?