separate darwin and non-darwin OS autodetection, add NOAUTODETECT support for top1m performance
separate darwin and non-darwin OS autodetection, add NOAUTODETECT support for top1m performance

This patch implements two structural changes.

First, OS-level detection routines are broken out into a case statement.

Darwin doesn't need to test for readlink/timeout nor Busybox, so this
noticeably improves performance over multiple runs on Darwin.

Linux suffers no additional penalty, since we already ran if $(uname)
every time anyways, and continues to use the more complex
timeout/gtimeout/busybox logic at the (preexisting, unaffected) cost to
performance over multiple runs.

Second, if NOAUTODETECT is set, then the script assumes (and verifies)
that you're providing TIMEOUTBIN and OPENSSLBIN values. If both of those
values are executable files, then the script will proceed, else it will
abort. In this scenario, readlink is unnecessary and is thus unused.

The combination of these two changes will improve performance over
multiple runs both on Darwin and when NOAUTODETECT is set for top1m.

PeterMosmans/cipherscan,MikeDawg/cipherscan,PeterMosmans/cipherscan,jvehent/cipherscan,MikeDawg/cipherscan,MikeDawg/cipherscan,jvehent/cipherscan,PeterMosmans/cipherscan,jvehent/cipherscan