Squashed commit of the following:

commit 5e73b94eed3d1fc75c88863c2cf07d5972eb348b
Merge: e12593a d04a585
Author: Nicholas Clarke <nc6@sanger.ac.uk>
Date:   Fri Feb 14 09:25:22 2014 +0000

    Merge pull request #1 from broadinstitute/checkpoint

    SimpleTimer passes tests, with formatting

commit d04a58533f1bf5e39b0b43018c9db3302943d985
Author: kshakir <github@kshakir.org>
Date:   Fri Feb 14 14:46:01 2014 +0800

    SimpleTimer passes tests, with formatting

    Fixed getNanoOffset() to offset nano to nano, instead of nano to seconds.
    Updated warning message with comma separated numbers, and exact values of offsets.

commit e12593ae66a5e6f0819316f2a580dbc7ae5896ad
Author: Nicholas Clarke <nc6@sanger.ac.uk>
Date:   Wed Feb 12 13:27:07 2014 +0000

    Remove instance of 'Timer'.

commit 47a73e0b123d4257b57cfc926a5bdd75d709fcf9
Author: Nicholas Clarke <nc6@sanger.ac.uk>
Date:   Wed Feb 12 12:19:00 2014 +0000

    Revert a couple of changes that survived somehow.

    - CheckpointableTimer,Timer -> SimpleTimer

commit d86d9888ae93400514a8119dc2024e0a101f7170
Author: Nicholas Clarke <nc6@sanger.ac.uk>
Date:   Mon Jan 20 14:13:09 2014 +0000

    Revised commits following comments.

    - All utility merged into `SimpleTimer`.
    - All tests merged into `SimpleTimerUnitTest`.
    - Behaviour of `getElapsedTime` should now be consistent with `stop`.
    - Use 'TimeUnit' class for all unit conversions.
    - A bit more tidying.

commit 354ee49b7fc880e944ff9df4343a86e9a5d477c7
Author: Nicholas Clarke <nc6@sanger.ac.uk>
Date:   Fri Jan 17 17:04:39 2014 +0000

    Add a new CheckpointableTimerUnitTest.

    Revert SimpleTimerUnitTest to the version before any changes were made.

commit 2ad1b6c87c158399ededd706525c776372bbaf6e
Author: Nicholas Clarke <nc6@sanger.ac.uk>
Date:   Tue Jan 14 16:11:18 2014 +0000

    Add test specifically checking behaviour under checkpoint/restart.

    Slight alteration to the checkpointable timer based on observations
    during the testing - it seems that there's a fair amount of drift
    between the sources anyway, so each time we stop we resynchronise the
    offset. Hopefully this should avoid gradual drift building up and
    presenting as checkpoint/restart drift.

commit 1c98881594dc51e4e2365ac95b31d410326d8b53
Author: Nicholas Clarke <nc6@sanger.ac.uk>
Date:   Tue Jan 14 14:11:31 2014 +0000

    Should use consistent time units

commit 6f70d42d660b31eee4c2e9d918e74c4129f46036
Author: Nicholas Clarke <nc6@sanger.ac.uk>
Date:   Tue Jan 14 14:01:10 2014 +0000

    Add a new timer supporting checkpoint mechanisms.

    The issue with this is that the current timer is locked to JVM nanoTime. This can be reset after
    a checkpoint/restart and result in negative elapsed times, which causes an error.

    This patch addresses the issue in two ways:
     - Moves the check on timer information in GenomeAnalysisEngine.java to only occur if a time limit has been
    set.
     - Create a new timer (CheckpointableTimer) which keeps track of the relation between system and nano time. If
    this changes drastically, then the assumption is that there has been a JVM restart owing to checkpoint/restart.
    Any time straddling a checkpoint/restart event will not be counted towards total running time.