first revision of sundial

Works with current uploader code, not yet modified to include needed tideline functions.

@jh-bate or @cheddar please review. @cheddar would like me to merge and tag this and have the uploader depend on it before merging the uploader branch where I've removed the moment dependency and replaced it with sundial methods.
I realize this was there before, but the default mask seems pretty arbitrary.  Maybe introduce another method similar to `formatDeviceTime` that hard codes that mask and just have this one fail if it's not given a mask?