Create an ArraySource.

Wraps an array; allows you to specify defined fields for the rows.
Make naming consstent accross source and sink.
Extract PipelineEndpoint superclass.
Allow transformations to specify which fields they add and remove.

This allows us to calculate required fields in the source / which
fields will be provided upstream or downstream of the transformation
chain.