Adding an external interface for the fiber scheduler. This allows us to use the fiber scheduler safely from a shared object without. This had to be done to prevent multiple instances of static / thread local state to exist. Wrapper implementations of the fiber based synchronization primitives can be added to extern_fiber.h, and implemented in fiber.cc to ensure there is only 1 definition (that of the server).
Adding a bi-directional shortest path implementation for Indy that uses the fiber scheduler to explore multiple children in the BFS in "parallel" on the given core. It is parallel in the sense that there are multiple search stacks (fibers) that execute on the same core (thread). When one blocks for IO, another can run.
The bi-directional aspect assumes that if the edge <A, 'is_friend_of', B> exists, then so does <B, 'is_friend_of', A>. A seperate implemetation can be written for a directed graph.
indy/disk/util/device_util: Remove useless try/catch statements
base/cmd: When printing missing required arguments, only print the same argument once.

The ByName vector of parameters which wa being iterated over contained the same parameter multiple times if it had multiple forms it could be given in (-h, --help, -?). Now we unique the parameters when checking if all the required parameters have been given, so that we don't print the required parameter once per alternate method of giving it.
 the parameter

Fixes #236
base/backtrace: Add a generic backtrace generation library

Don't print the backtrace function in the backtrace
test: Make unittests print backtraces when they segfault
Remove unnecessary try/catch
test: Keep running tests after an unknown exception.

Slight change in behavior. The test is still marked as failed but we keep running tests, just like if it was an uncaught std::exception
Add helper for printing backtrace on abnormal exit / call of std::terminate
spa/flux_capacitor: No reason not to use the universally available variable length arrays.
Don't add excess newlines
base/shutting_down: Update API so that it is safer during global construction and can have shutdown callbacks added.
base/json: Remove Format() function

base/as_str does the same thing generically so long as you have a streamer to ostream.
Cleaning up some unused code
using std::tuple_element_t
Merge pull request #245 from jmlvanre/short-path

Shortest path
base/backtrace: Remove unneeded return
Merge pull request #243 from cmaloney/misc-fixes

Lots of miscellaneous cleanups/fixes
base/json: Allow trailing commas without adding excess elements
base/fd: Don't try closing invalid file handles