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 
To meet the requirements of `Clock` you need a nested type called `rep`:
http://en.cppreference.com/w/cpp/concept/Clock