Remove explicit ordering of syncs from runtime (checkpoint)

This requires an implicit ordering, which is done via tickets, in order
to restore the ''global'' order of events in the task graph.
Middle Layer writes events using a separate thread (checkpoint)

Performance gains are questionable.  Further analysis and tuning will
be required.  This change uses a standard producer / consumer model
to pass tasks that are ''complete'' to the other thread for writing.
However, analysis is required to see when threads are being written.
Flush on joins, for the sake of middle layer

Middle layer ends up blocking tasks as the transition in thread 0 from
create phase to join phase is lost due to the events in the transition
remaining in the buffer until after the join events complete.
Removed buffer flush after syncs

This is a change to the llvm plugin, as the plugin inserts the buffer flush
calls.
Add comments / clean up middle layer

This may also contain final bugfixes to support parallel task graph creation.
Additional support required with the update middle
Further support for using shells besides bash

The run scripts use /usr/bin/time and time uses $TIME for its printing
format.  Some of the scripts are written to analyze a specific format.
And so $TIME needs to be properly defined before running, if using the
scripts is desired.
Merge branches 'master' and 'ticket_queue'

The front end runtime now uses tickets to order syncs and avoids a global
lock and buffer flush.  The middle layer has been changed to support this.
There are further minor fixes (including OpenMP support) made to middle
layer.  Finally, the ticket change slowed middle layer, so it has been
parallelized.