2017.11.6 Due to https://bugs.python.org/issue23548, we kinda have to close
          the event loop, else we'll get exceptions during atexit. Therefore,
          reverting the change.  Now, if caller supplies a loop, it is up
          to caller to close, but if no loop is supplied, we will close
          the default loop on exit.

2021.8.1 From feedback in https://github.com/cjrh/aiorun/issues/65, decided
         to change the max_workers parameter to None to allow the default
         in ThreadPoolExecutor to be used, rather than a constant of 10.

2022.4.1 @Pirulax pushed for removing `loop` from the `gather` call based
         on the deprecation warning, so there's a small refactor in
         https://github.com/cjrh/aiorun/pull/69
