Make value conversion/serialization be via instance methods.

Select boxes will require us to do these by manipulating
instance variables, rather than by using external functions.
We also eliminate the ValueSerializerType concept; this was
used so that there could be a value serializer that serialized
a superclass of the FieldValueType instead of only being
able to use one that serialized the FieldValueType directly.

We may reintroduce it later, but for now dropping the
concept makes it easier to move value serialization into
an instance method.
Add a basic select field with SelectableOptions.
Add overloads for selects with tuples and just objects.

So we now have overloads of selectField which take:
 - A list of objects (an implicit is needed to convert them to
   Strings for display on the client).
 - A list of (T, String) tuples where the second part is the
   String to display on the client.
 - A list of SelectableOptions, which carry the object and
   the client-side label, and may also carry any attributes
   to be applied to that option.
Properly handle SelectableOption attributes.
Properly handle the default selection in a select field.