Single point of control for string.format implementation in C grades.

Provide a single point of control for the choice of implementation of
string.format in the C grades.  This choice is currently made in three
different spots.

library/string.m:
	Define a new macro, ML_USE_SPRINTF, which expands to a Boolean that
	controls which implementation for string.format is used in C grades.
Workaround Linux NTPL TSX bug (Mercury Bug: 334)

New versions of glibc on x86_64 attempt to use the TSX extension of newer
Intel processors.  This converts mutex-protected critical sections into
transactional memory critical sections.  However the implementation appears
to be buggy and the marker lock in Boehm GC causes an assertion to be
triggered.

I've been in contact with the author of the elision code in glibc and have
submitted this workaround to the Boehm GC list.  Until the bug is fixed or
worked-around upstream I'd like to fix it here so I can continue other work.

This is the simpler and more portable workaround suggested by Peter Wang.

boehm_gc/include/private/pthread_support.h:
boehm_gc/pthread_support.c:
    Define GC_setup_mark_lock()  This procedure creates the lock specifying a
    pthread_mutexattr_t structure.  This is used to disable lock elision on
    Linux with glibc 2.19.

boehm_gc/misc.c:
    Call GC_setup_mark_lock() when initialising the collector.
Merge branch 'version-14_01-branch'

+ Workaround Linux NTPL TSX bug (Mercury Bug: 334)
+ Single point of control for string.format implementation in C grades.