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'm not sure what work is involved in the `zone()` method, but it seems like short circuiting and just not doing it might be a better option.  I also don't remember if `zone()` mutates the base dt object, if it does, then the other of operations in the math on the return means that `dt` will be mutated first before being cloned.  Perhaps rewrite as

```
var endDt = moment(dt);
if (offset != null) {
  endDt = endDt.zone(-offset);
}

return endDt - endDt.clone().startOf('day');
```