Convert services to ADT for simpler architecture evolution

Why ADTs?.....  Because we can separate the implementation from the interface
and reduce coupling of sources using enforced opaqueness in headers.  Effectively
bounding a change to the local compilation object and limiting the impact of
changes across the source base as the code evolves.
Basic infrastructure for ADT time services