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 be fixed via your commit, thanks!