Abstract getter/lazy loaders

@jugglinmike @oconnore 

I went w/ creating an object vs. an array.

I also ended up recapitulating their getter decision, which is ugly but I'd rather just leave it as it is in case there's some silly Gaia reason they do that (as the pattern is repeated around the project).

I'm not super happy w/ passing the target as an option (vs. binding the function). Nor am I happy that I'm plopping it at the bottom of each file, but I'd prefer a single place to keep it until we get a unified understanding of how we initialize each part of the clock.

I'll add tests on this branch too, so watch this space.