Switch the global CPU executor to ThrottledLifoSem
Switch the global CPU executor to ThrottledLifoSem

Summary:
With the default zero wake-up interval, `ThrottledLifoSem` behaves roughly like `LifoSem`, but it has some additional benefits: `LifoSem` will eagerly pass a posted token to any waiter, so if there is an idle thread no currently running thread can steal it. For example, when running the following code with `LifoSem`:

```
  auto [startPromise, future] = folly::makePromiseContract<folly::Unit>(folly::getGlobalCPUExecutor());
  for (size_t i = 0; i < 16; ++i) {
    future = std::move(future).thenValue([](auto) {
      LOG(INFO) << "Thread id: " << std::this_thread::get_id();
      return folly::unit;
    });
  }
  startPromise.setValue();
  std::move(future).get();
```

we see that the continuations always run on alternating threads:
```
I1006 13:56:41.273017 3703487 FutureChain.cpp:24] Thread id: 139733240215104
I1006 13:56:41.273249 3703486 FutureChain.cpp:24] Thread id: 139733248665152
I1006 13:56:41.273324 3703487 FutureChain.cpp:24] Thread id: 139733240215104
I1006 13:56:41.273384 3703486 FutureChain.cpp:24] Thread id: 139733248665152
I1006 13:56:41.273453 3703487 FutureChain.cpp:24] Thread id: 139733240215104
I1006 13:56:41.273524 3703486 FutureChain.cpp:24] Thread id: 139733248665152
I1006 13:56:41.273577 3703487 FutureChain.cpp:24] Thread id: 139733240215104
I1006 13:56:41.273631 3703486 FutureChain.cpp:24] Thread id: 139733248665152
I1006 13:56:41.273690 3703487 FutureChain.cpp:24] Thread id: 139733240215104
I1006 13:56:41.273754 3703486 FutureChain.cpp:24] Thread id: 139733248665152
I1006 13:56:41.273820 3703487 FutureChain.cpp:24] Thread id: 139733240215104
I1006 13:56:41.273865 3703486 FutureChain.cpp:24] Thread id: 139733248665152
I1006 13:56:41.273931 3703487 FutureChain.cpp:24] Thread id: 139733240215104
I1006 13:56:41.273998 3703486 FutureChain.cpp:24] Thread id: 139733248665152
I1006 13:56:41.274049 3703487 FutureChain.cpp:24] Thread id: 139733240215104
I1006 13:56:41.274098 3703486 FutureChain.cpp:24] Thread id: 139733248665152
```

The same happens with `ThrottledLifoSem`; however, if the system is under load (for example by running `stress -c <cpus>`, waking up another thread can take some time, and in the meantime the running thread is able to steal the token:
```
I1006 13:57:29.275002 3707669 FutureChain.cpp:24] Thread id: 140035267524160
I1006 13:57:29.275192 3707669 FutureChain.cpp:24] Thread id: 140035267524160
I1006 13:57:29.275275 3707669 FutureChain.cpp:24] Thread id: 140035267524160
I1006 13:57:29.275332 3707669 FutureChain.cpp:24] Thread id: 140035267524160
I1006 13:57:29.275395 3707669 FutureChain.cpp:24] Thread id: 140035267524160
I1006 13:57:29.275462 3707669 FutureChain.cpp:24] Thread id: 140035267524160
I1006 13:57:29.275529 3707669 FutureChain.cpp:24] Thread id: 140035267524160
I1006 13:57:29.275581 3707669 FutureChain.cpp:24] Thread id: 140035267524160
I1006 13:57:29.275663 3707669 FutureChain.cpp:24] Thread id: 140035267524160
I1006 13:57:29.275728 3707669 FutureChain.cpp:24] Thread id: 140035267524160
I1006 13:57:29.286649 3707669 FutureChain.cpp:24] Thread id: 140035267524160
I1006 13:57:29.286726 3707669 FutureChain.cpp:24] Thread id: 140035267524160
I1006 13:57:29.286792 3707669 FutureChain.cpp:24] Thread id: 140035267524160
I1006 13:57:29.286840 3707669 FutureChain.cpp:24] Thread id: 140035267524160
I1006 13:57:29.286908 3707669 FutureChain.cpp:24] Thread id: 140035267524160
I1006 13:57:29.286969 3707669 FutureChain.cpp:24] Thread id: 140035267524160
```

The same happens (most of the time) when using a non-zero wake-up interval (`--folly_global_cpu_executor_wake_up_interval_us=100`), even on an idle system:
```
I1006 13:59:08.458039 3716773 FutureChain.cpp:20] Main thread: 139695966565568
I1006 13:59:08.472482 3716974 FutureChain.cpp:24] Thread id: 139694357644864
I1006 13:59:08.472720 3716973 FutureChain.cpp:24] Thread id: 139694377723456
I1006 13:59:08.472808 3716974 FutureChain.cpp:24] Thread id: 139694357644864
I1006 13:59:08.472887 3716974 FutureChain.cpp:24] Thread id: 139694357644864
I1006 13:59:08.472934 3716974 FutureChain.cpp:24] Thread id: 139694357644864
I1006 13:59:08.473003 3716974 FutureChain.cpp:24] Thread id: 139694357644864
I1006 13:59:08.473048 3716974 FutureChain.cpp:24] Thread id: 139694357644864
I1006 13:59:08.473111 3716973 FutureChain.cpp:24] Thread id: 139694377723456
I1006 13:59:08.473187 3716973 FutureChain.cpp:24] Thread id: 139694377723456
I1006 13:59:08.473237 3716973 FutureChain.cpp:24] Thread id: 139694377723456
I1006 13:59:08.473302 3716973 FutureChain.cpp:24] Thread id: 139694377723456
I1006 13:59:08.473345 3716973 FutureChain.cpp:24] Thread id: 139694377723456
I1006 13:59:08.473408 3716973 FutureChain.cpp:24] Thread id: 139694377723456
I1006 13:59:08.473452 3716973 FutureChain.cpp:24] Thread id: 139694377723456
I1006 13:59:08.473532 3716974 FutureChain.cpp:24] Thread id: 139694357644864
I1006 13:59:08.473593 3716974 FutureChain.cpp:24] Thread id: 139694357644864
```

By switching the default semaphore we should have some small win in wake-up cost and cache-friendliness even with zero wake-up interval, and service owners can experiment with increasing the interval.

Reviewed By: Gownta

Differential Revision:
D40156983
Ninja: Flaky builds

fbshipit-source-id: bfb2fa48b3bf17da22d4ad2a4a069ca30a9aa12d

facebook/folly,facebook/folly,facebook/folly,facebook/folly,facebook/folly