Make all Descriptor implementors serializable
For most distributed/cloud data frameworks, it is necessary to serialize objects to pass them around the system.
This change should be as simple as having the Descriptor interface extend Serializable, and then adding a constant serial UID to every implementing class.
As we currently don't declare these as serializable, nothing is trying to serialize them, so this should be a low-risk change.
The only issue I can see happening is if there are any members of implementation classes that are not serializable, but the majority of things are afaict.