Template abstract_clock on Clock:

Sorry for the mixup, there was a bug in DecayingSample! The changes will need to be audited carefully. Unit tests pass now.

Reviewers: @scottschurr @rec 
I really don't love that construction `if (! (x = y))` because it really encourages you to read it wrongly. 

We don't get charged by the line, why not have a separate line with the assignment?