nanoTime() instead of currentTimeMillis()

System.nanoTime() is intended for calculating elapsed time, whereas System.currentTimeMillis() is intended for determining the actual calendar time.

This will also prevent elapsed time from being altered by the user changing the system clock (therefore preventing "faked" runtimes achieved by setting the clock back).
Merge pull request #614 from b0xb0x/patch-5

nanoTime() instead of currentTimeMillis()