Major refactoring of the crash handling subsystem and crash reporter.

Everything was jumbled together into a single struct before. They are now separated into:
- Crash handlers
- Application state and stats
- Crash reporter configuration

New features:
- Configurable to write log entries to a file instead of the console.

Other stuff:
- Also did some general code cleanup and maintenance.
Merge branch 'master' into feature/new-structure
Lots of housekeeping.

Restructured source files into flat layout, which causes less problems when using subprojects.
Cleaned up code (missing file headers, formatting, dead code, section headers, documentation).

Better separation between code areas:
Code is now separated into two main sections: Crash Catching (detects crashes and stores one report to disk) and Crash Reporting (loads reports from disk and sends them somewhere). As well, Crash Catching has been separated into sentry code (actual crash detection) and the rest. Some structures have been modified to accommodate this.

KSCrash and KSCrashLib must be compiled without ARC. There's just too much weirdness going on with stack corruption when ARC is enabled so it will remain this way until I narrow down the compiler bug enough file a report with CLANG with a repro case. You can still compile your app with ARC enabled, though.
Minor cleanup.
Tightened up warnings.
More cleanup.
Added entry to test crashing while handling another crash.
Memory related information is now stored in a sub-object called "memory".
Decrease pollution in NSData+Gzip and make self-sufficient.
Make NSMutableData+AppendUTF8 self sufficient.
Fix for category linking.
Added compiler warning if KSZombie compiled with ARC enabled.
Code cleanup and reorganization.

Replaced magic strings with constants for system info and crash reports.
Changed crash report structure for more logical layout.
Incremented report version to 2.0 since the changes break backwards compatibility.
Apple format filter now checks report version.
Name functions for mach exceptions and signals now return NULL if no matching name is found.
RFC3339DateTool now handles nil input gracefully.
Crash report writer now only writes one stack trace for NSException (both were the same anyway).
Secondary crash report handling, code cleanup.

Apple report filter now generates report data for secondary crash reports.
All crash reporter data is now stored in an app-specific subdir Library/Caches/KSCrashReports/(bundle-name).
All crash reporter files now follow the naming convention (bundle-name)-XYZ.(extension).
Thread index is now stored in a thread report.
Merged KSLogger.c into KSLogger.m.
General code cleanup.
Hardening some filters.

Added handler for when a filter list is empty.
Added comments to describe the convoluted processes of KSCrashReportFilterCombine and KSCrashReportFilterPipeline. It would be nice if there were a less crazy way to do this…
Getting defensive.

Added some sanity checks which prefer incomplete operations and error messages over aborting the program.
It is preferable in a crash manager for it to lose data rather than crash.
Group change.
Check for NSDate CLASS, not instance :P
Report structure change + added robustness.

Changed from report + secondary report structure to crash + recrash report structure. recrash report is stored inside the original crash report.
Replaced silent fails in the filters with active checks. Note that there is some code duplication with callCompletion() and makeNSError() that will be addressed later.
Made queue name detection more reliable.
Separated crash logging from report creation.
Added new CPU types to Apple report generator.