Fix whitespace, tabs, and newlines

*  Tab characters where mixed with multiple spaces
   leading to editor/IDE dependent presentation.
   Converted all tabs to 4-space characters.  Aligned
   all misaligned columns and code-blocks for consistency.

*  Linefeed characters throughout make for messy
   results when changes made in non-Windows
   environment, dependent on editor/IDE.  Removed
   all linefeeds and windows-centric text formatting.

*  Several places introduced "hidden" whiteapce
   (end of lines, in blank lines, end of file).
   This can result in change-management/diff problems
   and/or sometimes even cause hard-to-find bugs.
   Removed all trailing whitespace.

Signed-off-by: Chris Evich <chris-arduino@anonomail.me>
Add support for retrieving Volt-Low bit

* Access to this bit is critical to know whether
  or not the RTC's Vcc dropped below threshold
  and possibly corrupted date/time.  Setting
  the time will automatically clear this bit.

Signed-off-by: Chris Evich <chris-arduino@anonomail.me>
Add support for getting century value

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

The datasheet explains that these devices will buffer the date+time
values for a maximum of 1 second, during which the entire date & time
values must be read all at once.  However, a race condition is possible
if the real time causes a change in date, in-between reading/writing
the time then date (separately).  In this way it is possible to silently
corrupt the date/time data on the chip.

Fortunately the solution is also suggested in the datasheet, and the
reason it buffers + locks the date/time values while reading:
Always reading/writing both in one atomic operation, and complete
it within 1-second (real time).

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 atomic 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 of code + small fix

* Re-arranged header slightly, added comments
* Re-arranged implementation to match header, added comments
* Fixed some alarm retrieval functions to use getDateTime()

Signed-off-by: Chris Evich <chris-arduino@anonomail.me>
Add timer support + other minor fixes

* Implemented timer similar to alarm functions
* Modified time-critical accessor methods to operate from
  buffered values.  This avoids unnecessary i2c calls
  which could put other buffered values out of sync.

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