Fix some documentation.

Fix some errors in the documentation of {string_writer,io}.{print,write}.

Clean up the formatting of the same documentation.

library/stream.string_writer.m:
	Fix a cut-and-paste errors: there is no string_writer.print/3
	predicate.

	s/pragma foreign_code/pragma foreign_type/ in a spot where
	the latter was meant.

	Refer to the destination stream as a string writer stream, rather
	than an output stream.

library/io.m:
	s/pragma foreign_code/pragma foreign_type/ in a spot where
	the latter was meant.
Fix a problem installing mfilterjavac on Windows.

mfilterjavac/Mmakefile:
	Don't accidentally drop the .exe extension in the install target.
Add io.{write,print}_line to the standard library.

Add the predicates io.write_line and io.print_line to the standard library.
These are versions of io.write and io.print respectively, that in addition to
printing their argument also print a final newline.  While this is no different
to calling io.{write,print} and then calling io.nl, it is a little more concise
which can be convenient in some circumstances.

library/io.m:
	Add the above predicates.

compiler/error_util.m:
	Avoid ambiguity with the write_line/3 predicate defined
	in this module.

NEWS:
	Announce the new predicates.

tests/hard_coded/write.m:
	Use up-to-date syntax in this module.

	Call write_line in a few spots.
Merge branch 'version-14_01-branch'
Fix a problem that left references to undefined labels in C code.

The problem was introduced by my recent change that removed the definitions
of internal labels if those labels started while loops, and all references
to them would be converted into "continue" statements within those loops.
The diff removed the definitions of these labels, but they were still being
declared. Those declarations expand out to nothing in most cases, which is
why I did not notice the problem, but they are used in some situations,
such as when MR_LOWLEVEL_DEBUG is defined, in which case they register
the correspondence between the names of labels and the code addresses
they represent. The problem was that the code that was registering this
correspondence referred to a now-undefined label.

compiler/llds_out_file.m:
   When gathering labels to declare, delete while labels that won't end up
   being defined.

   We used to compute the list of entry and internal labels three times:
   when deciding the list of labels to forward-declare up front, when deciding
   the list of labels to define in each module, and when deciding whether
   a C module defined any labels without layout structures. We now
   do it just once, up front, and record the result for later use.

   Fix some out-of-date comments.

tests/hard_coded/no_refs_to_deleted_labels.{m,exp}:
   A test case derived from the code that brought the problem to my attention.

tests/hard_coded/Mmakefile:
   Enable the new test case for LLDS grades. (The problem isn't relevant
   in other grades.)

tests/hard_coded/Mercury.options:
   Specify -DMR_LOWLEVEL_DEBUG when compiling the new test case, to make
   the test case fail without the bug fix.

compiler/opt_debug.m:
   Fix white space in LLDS dumps.
Merge branch 'master' of https://github.com/Mercury-Language/mercury
Implement --no-max-error-line-width, as requested in Mantis #308.

compiler/options.m:
   Change the type of the max_error_line_width option from int to maybe_int.
   Change its documentation accordingly.

doc/user_guide.texi:
   Change the option's documentation here as well.

compiler/globals.m:
   Since this is the compiler's first maybe_int option, add a predicate
   to look up such options.

compiler/error_util.m:
   If the user specifies --no-max-error-line-width, do not try to pack the
   words of an error paragraph into lines; just return all the words on one
   line.

   Factor out some common code in the group_words predicate, and give that
   predicate a more accurate name.

tests/invalid/any_to_ground_in_ite_cond_nomax.{m,err_exp}:
   Add this copy of the existing any_to_ground_in_ite_cond test case.

tests/invalid/Mercury.options::
   Specify --no-max-error-line-width for the new test case.

tests/invalid/Mmakefile:
   Enable the new test.
extras/lex: fix whitespace and a spelling error

extras/lex/lex.m:
    As above.
extras/lex: add support for Java and C#

extras/lex/lex.m:
    As above.
extras/lex improvements

    + Add a charset type that can be used to represent sets of characters.
      These are useful when constructing lexers.

    + Start adding support for wider character sets.

    + Add support for matching on ranges of characters.

extras/lex/lex.m:
    As above.

    anybut/1 now uses unicode as a basis.

extras/lex/samples/lex_demo.m:
    Demonstrate the new features.
extras/lex: minor changes following Sebastian's changes

extras/lex/lex.m:
    Document some caveats with the charset functions.

    Add a range check to the two-argument charset function.

    Simplify the anybut function.
extras/lex: fix lex.lexeme char 8-bit cutoff

In lex.lexeme, all char codepoints where downcast to 8bit, thus rendering
Unicode matching impossible.  This change removes this limitation.

extras/lex/lex.lexeme.m:
    As above.
extras/lex: enable full Unicode support.

The NFA is now using the sparse_bitset to compile the state transitions.
This significantly reduces the compile time for the regular expression, thus
enabling the use of a much larger Unicode range for character recognition.

The helper function anybut/1 has been made aware of unicode, i.e.
anybut/1 now recognises [`0x1` .. `0xffff`] - [but chars].

In addition, the regexp(string) instance now accepts Unicode chars,
the previous code was only valid for ASCII chars (when using the UTF-8
encoded C-strings in the C-based grades)

extras/lex/lex.convert_NFA_to_DFA.m:
    Use the sparse_bitset ADT to build the tables used by the library.

extras/lex/lex.m:
    Add a new constructor to the regexp type allowing regexps to be build
    directly from character sets.

extras/lex/lex.regexp.m:
    Build regexps from character sets.

extras/lex/samples/lex_demo.m:
    Demonstrate the use of wide characters in the lexer demo.

extras/lex/lex.automata.m:
extras/lex/lex.lexeme.m:
    Conform to above changes.
extras/lex: Use a more concise datastructure for character ranges

Lists of Unicode characters can be very long as there are many characters.
This change represents ranges of characters by storing only the first and
last character in each range.

extras/lex/lex.m:
    As above.
extras/lex: don't use deprecated functions

extras/lex/regex.m:
    Don't use deprecated standard library functions.