Add support for getting century value

Signed-off-by: Chris Evich <chris-arduino@anonomail.me>
Fix get/set date/time race condition

A race condition is possible if the real time causes a change in date,
in-between reading/writing the time then date (separately).  A similar
race is possible if the date is read, then the time (with the date
changing in the interval).  This makes it possible to silently corrupt
the date/time data on the chip.

The solution is suggested in the datasheet, uses the device's buffering
& locking the date/time values while reading within once second.
Therefore, always reading/writing both date and time in one operation,
completing within 1-second (real time), guarantees all the date/time
elements will be consistent.

Added two new functions which perform setting/getting the date and
time in one single operation.  Also, to help with consistency between
control registers and date/time values, they are also retrieved
atomically.  To maintain compatibility with older code, the individual
date/time set/get functions were modified to simply wrap the new
functions, by first pre-retrieve the missing values.

Though the old functions now introduce a (very very) small chance for
local data corruption (dependent on get/set logic and timing), they're
guaranteed to never silently corrupt the device's data.  New code should
make use of the monolithic getDateTime() or setDateTime() functions.

Signed-off-by: Chris Evich <chris-arduino@anonomail.me>
Update keywords.txt

Signed-off-by: Chris Evich <chris-arduino@anonomail.me>
Minor re-arranging + various fixes

* Re-arranged header slightly, added comments
* Re-arranged implementation to match header, added comments
* Fixed some alarm retrieval functions to use getDateTime()
* Modify alarm functions to mask off timer flag
  when clearing (as per datasheet).  This is so clearing
  AF doesn't also clear TF (and visa-versa).
* Modified time-critical accessor methods to operate from
  buffered values.  This avoids unnecessary i2c calls
  which could put other buffered values out of sync.
* Fix Wire include + extern definition to work when including
  with other code that uses i2c in a sketch.  Otherwise,
  The Wire library's global 'TwoWire Wire' variable will clash
  when linking.

Signed-off-by: Chris Evich <chris-arduino@anonomail.me>
Add zeroClock() to zero out date/time

Initializing to anything else requires providing
the initial values to callers for comparison / calculation.
It also potentially complicates weekday/leap year
calculation vs elapsed wall-clock.

Adds a zeroClock() member function that
resets everything to the lowest possible
value/meaning (i.e. 0, 1, 1900). This gives a
simpler point of reference for callers and will
interface better with other widly available date/time
library representations.

The old initClock() is still present with previous values
to maintain backward compatibility.

Signed-off-by: Chris Evich <chris-arduino@anonomail.me>
Merge pull request #4 from Yewess/clean_race_timer

Fix race condition & code cleanup