RTC time related optimizations

Consider this changes. 

First commit removes the need to call heavy function gettime() where possible. 

The second commit optimizes time formatting in telemetry log, the new date/time string is generated only when time changes. Had some problems on sky9x because sprintf is not available. Adding `targets/sky9x/syscalls.c` does not resolve this problem. I get:
```
/home/pub/android/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/bin/ld: .text has both ordered [`.ARM.exidx' in /home/pub/android/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/armv7-m/libgcc.a(_divdi3.o)] and unordered [`.text._realloc_r' in /home/pub/android/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/lib/armv7-m/libc.a(lib_a-reallocr.o)] sections
/home/pub/android/gcc-arm-none-eabi-4_7-2013q3/bin/../lib/gcc/arm-none-eabi/4.7.4/../../../../arm-none-eabi/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
make: *** [opentx.elf] Error 1
```


But now we have a malloc here!