exception_ptr -> exception_wrapper migration
Summary:
integrate exception_wrapper everywhere, and deprecate public methods that take ptrs directly to discourage their use
note that this will break for throwing non-exceptions, which is probably fine
this change opens the door to interesting optimizations for those interested, e.g. Future::then<Exn1, Exn2>(/* func throwing Exn1 and Exn2 */) that autowraps the given types into the resultant future
new benchmark:
```
throwAndCatch 23.69us 42.21K
throwAndCatchWrapped 119.53% 19.82us 50.45K
throwWrappedAndCatchWrapped 350.16% 6.77us 147.80K
```
Test Plan: existing unit tests, suspected potential perf wins confirmed by benchmark, will wait for windtunnel to see other wins/regressions
Reviewed By: hans@fb.com
Subscribers: search-fbcode-diffs@, apodsiadlo, alikhtarov, andrii, trunkagent, fugalh, njormrod, folly-diffs@, bmatheny
FB internal diff:
D1644912
Signature: t1:
1644912:
1420731849:
3dc658dc03bfd6e75d61158808c7dad96092ecfb