Improve portability of delay and time functions

Previously, these would only check the _POSIX_TIMERS define and if it
was positive, assume that clock_gettime, clock_nanosleep and
CLOCK_MONOTONIC were all available. Additionally, it would assume that
if it was non-positive, that those function are guaranteed to be not
defined.

In reality, _POSIX_TIMERS only guarantees clock_gettime availability,
_POSIX_CLOCK_SELECTION guarantees clock_nanosleep and
_POSIX_MONOTONIC_CLOCK guarantees CLOCK_MONOTONIC.

This commit checks all of these when appropriate. Also, it always
defines a getclock_internal() function, which either calls
clock_gettime() or gettimeofday(). This prevents a problem with
redefining clock_gettime() on OpenBSD, which provides clock_gettime()
but does not set _POSIX_TIMERS (presumably because it does not offer all
interfaces requires by the POSIX Timers option).

This commit makes ArduinoUnix work on OpenBSD as well.
Don't use designated struct initializers

Apparently this is not supported by gcc on all platforms (in particular,
OpenBSD and the raspberry pi had problems). Using a plain initializer
with the values in order is slightly less readable, but apparently more
portable.