Clean up headers

# Purpose

These are mostly minor structural changes in an effort to remove some ambiguity in the dependencies between classes. There were cycles in the header dependency graph. While this is trivial for the compiler to deal with, for new readers of the code, it was not always clear in what order the abstractions were built up. There is also something to be said for a given class clearly and explicitly declaring its dependencies, instead of indirectly inheriting them from other classes.

# Summary of changes

- `GPUImageInput` protocol and `GUPImageRotationMode` have been moved to `GPUImageInput.h`
- Enum declaration for `GUPImageRotationMode` was modernized
- Wherever possible, `#import` directives in header files were replaced with `@class` directives
- `#import`s were added to implementation files as necessary—dependencies were thus made more explicit instead of being inherited from other class declarations
- Exception: `GPUImageFilterGroup.h` imports `GPUImageFilter.h` because it is used ubiquitously by subclasses
- Introduces a simple macro, `UINSImage`, defined to `UIImage` or `NSImage` as required
- A conditional block was made moot, and removed, by using `UINSImage` macro