Add thread_safe attribute to store procedures.

The mutvar procedures are not truly thread-safe but neither does
obtaining a global lock make them become thread-safe in a useful way,
except perhaps avoiding data races.  On the other hand, the global lock
inhibits parallelism in programs that do use mutvars in a thread-safe
manner.

library/store.m:
	As above.

NEWS:
	Announce change.
Use mutvar in benchmarking.

library/benchmarking.m:
	Use store mutvar type in `benchmark_nondet_loop'.

	Delete redundant implementation of a reference type.
Add thread_safe and not_thread_safe attributes.

library/benchmarking.m:
library/bit_buffer.m:
library/exception.m:
library/gc.m:
library/io.m:
library/library.m:
library/thread.m:
library/time.m:
	Add `thread_safe' or `not_thread_safe' to foreign procs
	where it is clear which is correct.
Delete unused type io.stream_putback.

library/io.m:
	As above.
Fix type of MR_compare_tuple_pred for high-level C grades.

runtime/mercury_ho_call.h:
	Fix the type of MR_compare_tuple_pred function pointer
	for high-level C grades.