LXT/HXT are external crystl oscillator and can be absent on custom board.
This enables configuring LXT/HXT presence:
1. By default, LXT/HXT are configured to be present, except M252 which has no HXT.
2. When LXT is configured to not present, lp_ticker/watchdog will clock by LIRC instead.
3. Limitations:
(1) On all targets, LIRC-clocked lp_ticker gets inaccurate and fails to pass tests.
(2) On NUC472/M453, HIRC-clocked PLL doesn't output 1MHz-aligned frequency. us_ticker gets slight inaccurate.
(3) On all targets, LIRC-clocked RTC is not supported due to no H/W path/RTC clock source reset to LXT on reset/RTC not trimmed for other clock rates.
4. On M263, TRNG's clock source defaults to LXT and needs special handling without LXT.
5. On M252, replace target.hxt-enable with target.hxt-present for consistency.
The use of mktime was causing a fault when called in interrupt handler because on GCC it lock the mutex protecting the environment, To overcome this issue, this patch add dedicated routine to convert a time_t into a tm and vice versa.
In the process mktime has been optimized and is now an order of magnitude faster than the routines present in the C library.