Implement character buffers directly in C.

For the C backends provide a version of character buffers that is implemented
directly in C.  Modify the parser so that each reader has only a single
character buffer that it re-uses over its lifetime.

These two changes lead to a 17.5% speedup in parsing and 30% decrease in the
number of GCs during parsing on my test benchmark.

The non-C backends still use the Mercury implementation of character buffers.
(C# and Java would almost certainly benefit from native implementation, but
that is future work.)

src/json.char_buffer.m:
	Provide a C implementation of character buffers.

	Modify the Mercury implementation of character buffers
	so that it can exist in the same module as the above.

	Delete two procedures we were not using.

	Make the init predicate impure.

	Add a new predicate for resetting the character buffer.

src/json.m:
	Create a single character buffer for use by the reader
	when the latter is initialised.

src/json.json_lexer.m:
	Instead of creating new character buffers during parsing
	just re-use the one that was created when the read was
	initialised.

	Use character buffers to build up string literals instead
	of a reverse list of characters.