Pipelines

* add pipeline and stage classes
 * stages have inputs and outputs
 * stage inputs are connected to other stages outputs or external data
 * stages are sorted by their dependency graph
 * stages are determined to be executed whether their inputs have changed or they should be executed every time
* add generic pipeline painter superclass
 * no template pipeline painter on purpose
* add example painter using a pipeline