Nest original exception while creating NoShardAvailableActionException

Closes #7756
Fix optimize behavior with 'force' and 'flush' flags.

This does the following:
* Make 'force' flag only build a merge if the delegate MP returned no merges
* Add async handling for 'flush' when 'waitForMerges' is false
* Remove flush at the beginning of optimize.  This is something the user can
  do if they wish, before calling optimize.

closes #7886
closes #7904
closes #7920
Move forbidden api signature files to dev-tools.

This avoids the files showing up in the binary release, since .txt files
are copied.

closes #7917
closes #7921