Fix infinite loops related to endProcess on GPUImageFilter

When removeTarget is called on a GPUImageFilter that contains a loop in the filter outputs (such as GPUImageLowPassFilter), an infinite loop is created while tearing down the filters. This loop comes from recursive calls to endProcess.

We can avoid this by adding a status flag in the GPUImageFilter and GPUImageFilterGroup to check if the filter has already started the endProcess method and do no work if it has already started.

This resolves issue: #793