Clean up and consolidate Pipe API interfaces

Note: injectItem() takes the opposite side that entityEntering() used
to.