Change project() to use **kwargs

Rather than passing fields to `Pipeline.project()` using named
arguments, using `**kwargs` will allow future uses (e.g., computed
fields) to be handled without changing the signature of `project()`.

This change allows for the removal of the `add_or_remove()` function and
the tests that were designed around it.

References #22