Function Composition with CI Filters

We continue our example of CoreImage CIFilters, this time showing how function composition can facilitate working with filters a bit more flexible and chainable. Starting with the imperative, method-based approach, then gradually building towards a pattern that allows us to easily build filters functionally, swapping out the order, and changing around input parameters.

This is a companion discussion topic for the original entry at https://nsscreencast.com/episodes/148-function-composition-with-ci-filters