Change filter input and outputs to the base class

Currently the pipeline class uses `GPUImageFilter` as the class for adding, removing, etc filters.  Filters do not derive from that class so you have to cast filters to that class when you add or remove them.  It should instead use the base class of all filters `GPUImageOutput<GPUImageInput>` so no casting has to happen.  This is the way `GPUImageFilterGroup` works and the pipeline is similar in that it groups together filters.