Options for feature readers and writers to support transforms

See #2258. This is still work in progress, because the options need to be added to other formats than GeoJSON, and unit tests are missing.

However, reviews are welcome any time because changing things is easier now than later.
I understand your point. Could we maybe change the documentation to something like:

> Projection of the data we are writing. If not provided, the projection will be derived from the format, if the format has a fixed projection (e.g. 'EPSG:4326' for the KML format). Otherwise the features will be written in the `featureProjection`.

Or is this too confusing?

It is just that, for example when you are reading a KML, you do not have to specify the `dataProjection`. Then, when writing you suddenly have to give a projection. But you are writing KML, so it should be clear what projection to use.