Use perror() instead of printf(... strerror()) and indicate error position
Add a function to obtain the structure containing the hardware parameters.
Use get_hardware_parameters() instead of reading the file for a second
time. Adjust the hw variable accordingly.

This also saves one hardcoded file name.
Remove two redundant declarations, these functions are only used internally.
Add two new error states, DT_CHDSTERR and DT_LEAPERR. These states indicate
that the DST flag respectively leap second flag are set while they should
not be (probably due to a bad radio signal).
Be more strict on processing leap seconds:

- when there is no decoding error, only accept announcements after 23:00
  UTC at the last day of a month, set DT_LEAPERR otherwise.
- when there is no decoding error, only process leap second at 00:00 UTC
  at the first day of a month.

This is in accordance with Bulletin C of the IERS.
Restrict processing of time zone changes:

- when there is no decoding error, only accept announcements between
  00:01 UTC and 00:59 UTC at the last Sunday of a month, set DT_CHDSTERR
  otherwise.
- when there is no decoding error, only process time zone changes at
  01:00 UTC at the last Sunday of a month.
In add_minute(), check that it is 00:59 UTC of the last Sunday of a month
when adjusting the hour.
As add_minute() now only adjust the hour when it really should (modulo the
month value), process the DST flags in decode_time() analogous to the
processing of the leap second flags.
add_minute() now only operates on the "time" parameter, adjust its
prototype accordingly.
White space tweaks.
Add a function get_utchour() to avoid code duplication and -01:mm UTC.
Slightly overhaul add_minute(), add back flags parameter :

- use get_utchour() instead of manually calculating it.
- the ANN_CHDST flag is already cleared when entering this function, so
  use the DT_CHDST flag instead.
- wrap some if statements, re-indent.
Bit 16 and 19 are still set when the time zone change respectively leap second happen, so:

- do not reject 01:00 UTC
- adjust for utchour and bit 17/18 changes during the time zone change

At 23:00 UTC the local time is at least 00:00 so we must use the first day
of the next local month instead.