Moves Clock and implementations to kernel for usage elsewhere

Clock as an interface is useful for abstracting time. It is moved to kernel
 for usage elsewhere. The real implementation (delegating to System.currentTimeMillis())
 is also moved to kernel main source. The FakeClock dummy is moved to kernel test source.
Updates the current users to use the new import
FakeClock has some utility methods added so it can be more presicely controlled.
The single Clock method is renamed to be the same as the one in System