Create "middleman" objects for `Product`s that allow logical combinations of them to be `wait`ed upon by consuming `Step`s. - `AllOf` - `AnyOf` - `EachOf`