Disallow even taking EntityType.field and using it an an orElse field.

This is because the result of orElse isn't registered with EntityType,
so it could be misleading to the consuming developer in a case such as:
  SomeGeneratedField.orElse(field(...))
Optimize ExtensibleAdaptableField.orElse(AdaptableField.empty).
Extract MapStorageAdaptableFieldFactory and accompanying model.
Add some clarity to the contract for SourceType, TargetType, and Representation.
Simplify the API for AdaptableFieldFactory.
Add support for Persistence minDataVersion and maxDataVersion.

This included creating PersistenceAdaptableFieldFactory.
Move types to more appropriate packages and add some package.html files.
Make Representation type-safe so that incompatible Representations can't be used.

This prevents this mistake at compile-time.
Move FieldFactory code from TestingPlatformDriver to PlatformDriver.