Improved header import generation and forward declaration for classes, protocols, and categories

* Fixed framework / library header imports with external classes by referencing superclasses and category classes using a symbol when possible, which can then be used to obtain the expected path of that framework or library. Also added special-casing for Foundation classes (ie. `NSArray`, `NSDictionary`, etc.) to import from Foundation (where the public headers are exposed) instead of CoreFoundation (where they are actually implemented).
* Fixed protocol header imports by following the same header format that they are exported in - because class-dump currently exports all protocols, regardless of whether they were external or not, this seems like the appropriate behaviour. Also match class importing behaviour by importing from the current framework if the binary being dumped is a framework.
* Fixed cases where forward-declaration of classes where the referenced type contains both a class and a protocol (ie. `NSObject<NSCopying> *`) resulted in the `@class` declaration containing the protocol as well.
* Protocols are now forward-declared (using `@protocol`) when possible, instead of importing its header every time.
* Fixed a couple of bugs with translation of library ordinals (used in `CDSymbol`) to dylib load commands (`CDLCDylib`).
* Fixed generation of framework names for libraries that had multiple extensions (ie. `objc.a.dylib`).