Added new image operations

This PR rewrites all of our image operations (``fill``, ``max``, etc) in a new format and adds code to Filter to load/parse/run the new operations.

This doesn't remove any old code and the new code doesn't get used anywhere yet (you must access it through the shell). I did this to keep this PR small and easy to review, but it should not be merged without merging later PRs as well.

The new format is intended to be more readable, testable and extensible than what we've already got. It's also making use of Willow.