Removing implicit dependency on system clock.

Introduced the Clock interface to remove the direct dependency on System.currentTimeMillis()