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>