Timex bugfix and improvement

This branch fixes two bugs in timex and adds one minor feature to timex.
Also included are some unit tests for timex.

The two bugs:
1. The check for an integer overflow in timex_add is nonsensical and should be replaced by the code portion below this check (which someone commented out).
2. timex_sub fails to calculate the correct time if a.microseconds < b.microseconds. This is fixed by
the code in this branch.

Feature added:
timex contains a function which converts a timex_t type to uint64_t. It would be nice to have a function which could convert a uint64_t back to a timex_t type. The new function timex_from_uint64 does exactly that.
I don't like this "dummy" in here.
First it has common linkage, which obscures name clashes if another compiling unit uses this name. Then, the name is not really well chosen.
Just declare the variable locally in the function.