Add the option to ignore non fully blocking app hangs
Description
Our app hang logic detects app hangs that don't fully block the main thread, which leads to inaccurate stack traces for such app hang events because the app hang logic might fire a bit too late to capture the proper stack trace responsible for the app hang. For some customers non-fully-blocking app hangs are noise, and they often disable the whole feature. Instead, we could provide an option only to report fully blocking app hangs. The option could be an enum something like reportAppHangLevel with (we have to come up with better names)
- FullyBlocking
- NonBlocking
- None
Implementation
To achieve this, we have to change our implementation a bit and might have to combine it with the CADisplayLink, which we already use for the SentryFramesTracker, but we have to be careful cause this can increase the CPU overhead, as pointed out here https://github.com/getsentry/sentry-cocoa/blob/f25febbb81e40893076ff878f59f146ddb948ab4/Sources/Sentry/include/SentryANRTracker.h#L13-L20
Related GH discussion: https://github.com/getsentry/sentry-cocoa/discussions/2715 Related GH issue for linking app hangs to profiles https://github.com/getsentry/sentry-cocoa/issues/3493.
### Tasks
- [ ] https://github.com/getsentry/sentry-cocoa/pull/4262
- [ ] https://github.com/getsentry/sentry-cocoa/pull/4265
- [ ] https://github.com/getsentry/sentry-cocoa/pull/4282
- [ ] https://github.com/getsentry/sentry-cocoa/pull/4285
- [ ] https://github.com/getsentry/sentry-cocoa/pull/4286