Fix EZP-21036: Fallback default value of some of the FieldTypes can not be used to create Content

This PR resolves issue https://jira.ez.no/browse/EZP-21036

For some field types it was not possible to use `getEmptyValue()` in creating and updating Content, as `acceptValue()` would reject it.

This fixes the problem by:

* refactoring `acceptValue()`: check for empty value as returned by `getEmptyValue()` is added, `internalAcceptValue()` is removed, three new methods are added: `createValueFromInput()`, `checkValueType()` and `checkValueStructure()`
* adding SPI Value interface: this enabled removing references to `Core` from the interface, adding some type hinting and also:
* doing away with using `null` as empty value alias

With this change, `null` can be used only as a shortcut for empty value when calling `acceptValue()`.
Field value in `Core` is now in all cases an object implementing SPI Value interface.

API integration tests are updated with tests for creating Content with `getEmptyValue()`.

### Additional fixes:
* some tests wrongly expected valid empty values to be rejected by `acceptValue()`
* Binary field types: if not given file size will be set from existing file
* Binary field types: wrong exception arguments on non-existing file
* Image: checking that file exists, using deprecated Value property in `getName()`
* MapLocation: fixed `isEmptyValue()`
* Relation: fixed returning relation data for empty value
* Removed deprecated `getIndexData()` from some field types
* Keyword: fixed accepting string value
* Float: enabled legacy converter to store empty value
* Page: added structure check

### Followup issues created:
* Remove IOService from Image field type: https://jira.ez.no/browse/EZP-21115 (fixed)
* Implement getName() for all field types: https://jira.ez.no/browse/EZP-21148