Reduce overhead of checking for full buffers

Just as storeBasicBlock passes along information to improve storing memory
operations, the complete call passes along the position value to the
check buffer size call.

However, the compiler generates an unusual assembly sequence that leaves
some question as to its efficiency.
Restructure conditional in runtime

Simple algebra was applied to the buffer check conditional statement.  The
compiler then needs one fewer assembly instructions to express the statement.
Remove legacy comments from header
Fix memory leak when ct_file is empty
Split middle into multiple files based on features added

A separate file exists for ordering the events from the event list, which
handles the presence of tickets in the event list.  The background task
writing has also been moved into a separate file.

Finally, there is initial support for the task graph index in these components.
Task graph wrapper for the task graph file

This includes individual compression of tasks and the creation of an index
for where each task is located in the file.  The ftell function was added
to ct_file API.  And ct_graph was removed.
Middle layer changes to support new task graph format (index)

The file is uncompressed with individual tasks written compressed.  An index
of file locations is also constructed so that the task graph has sequential
or random access.
Update stats to use new Task Graph API
Extend stub APIs in TaskGraphInfo

Continuing to prepare APIs based on usage in middle layer
Interfacing with basic_block_info event and TaskGraphInfo class in middle
Revising basic_block_info event with additional fields
Updated Contech pass for basic_block_info

Pass stores data in event format, so that runtime can write the data
directly to disk.  Also added first piece of debug information into
the basic_block_info event.
Update runtime to directly send binary data from Contech pass to event list
Include file and function names as part of basic block info

Currently the LLVM metadata for dbg does not always work for filename,
so we use the ModuleID as the identifier.
Updated event lib to support file and function names in basic block info
Updated middle for passing basic block info from event list to task graph
Task graph class that supports simple basic block info

This info includes function and file names.
Revise ct file to declare written data as const
Stats uses new task graph API
Add a count of IR operations in each basic block