Fix a compilation problem with MSVC.

scripts/mgnuc.in:
	C_COMPILER_TYPE still uses the cl_* style names, so we still need
	to match against that rather than msvc_*.
Fix errors in the operator table in the reference manual.

doc/reference_manual.texi:
    Remove character escapes from the operator table.
Fix github issue #14.

Compilation of the Boehm GC was failing on 64-bit openSUSE 13.1 because that
system defines site specific settings for configure scripts and one of those
site specific settings is that when using a 64-bit C compiler, the value of
--libdir should default to ${exec_prefix}/lib64.  For the Boehm GC, this means
that libatomic_ops was being installed libatomic_ops-install/lib64 rather than
libatomic_ops-install/lib.  The top-level Boehm GC Makefile expects to find it
in the latter.

boehm_gc/build_atomic_ops.sh:
	Explicitly set --libdir for libatomic_ops so that we override any
	site specific settings for configure and libatomic_ops is "installed"
 	in the correct directory.
Add integer multiplication based on Karatsuba's algorithm

  library/integer.m:
    Adds Karatsuba based fast integer algorithm in the function
    `pos_mul_karatsuba' which replaces the call to `pos_mul_list' in `pos_mul'.

    It is a divide and conquer algorithm which uses O(n^1.585) basic
    operations instead of O(n^2). The function expects two positive
    integer variables, the first one must have at most as many digits as
    the second one. It falls back to quadratic multiplication if the
    larger factor has less than `karatsuba_threshold' digits.

    If compiled in a parallel grade, the function uses parallelism for the
    divide and conquer part for numbers with more than
    `karatsuba_parallel_threshold' digits.

    The current values for `karatsuba_threshold' is 35,
    `karatsuba_parallel_threshold' is 10 times this value.
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.
Announce improvments to the lex and regex libraries in extras.

NEWS:
    As above.
Add .gitignore files to the extras/ directory

extras/.gitignore:
    Mercury ignores the --use-{grade}-subdir dir
    Mercury/** for git 1.8+ this recursively ignores all build files
    ignoring *.mh and *.init files
    *.err output files
    lib*.{dll|so|a|dylib} ignores target compiler library output
    *.jar ignores the Java grade output
    *.exe for Windows executables

extras/dynamic_linking/.gitignore:
    ignoring the copy of dl.m, name_mangle.m
    ignoring hello lib and dl_test* executables

extras/moose/samples/.gitignore:
    ignoring cgram.m small.m alpha.m expr.m which are
    generated from the .moo grammar files

extras/graphics/mercury_cairo/samples/.gitignore:
    ignoring *.png output and all executables

extras/**/.gitignore:
    In each sample/test/example folder the linux executable/test
    output is ignored
fix extras/graphics/ examples

Replace all occurances of index0_det with det_index0 to make these examples
compatible with recent versions of Mercury.

extras/graphics/easyx/samples/bounce.m:
extras/graphics/mercury_allegro/examples/exspline.m:
extras/graphics/mercury_allegro/samples/demo/aster.m:
extras/graphics/mercury_allegro/samples/speed/view.m:
    As above.
Merge branch 'version-14_01-branch'
Re-enable the use of texi2dvi on Cygwin.

configure.ac:
	Very old versions of Cygwin had a broken texi2dvi, so we disabled its
	use on that platform.  Re-enable its use since it works with the
	current version.
Avoid some C compiler warnings on Cygwin.

library/int.m:
	Avoid warnings about overflows in implicit constant conversions in the
	implementations of {min,max}_int/0 on Cygwin.  The C compiler is
	complaining about where we assign LONG_MIN or LLONG_MIN to a 32-bit
	MR_Integer.  This only occurs in code branches that are dead when
	MR_Integer is 32-bit, so the fix here is just to put in some explicit
	casts.
Improve printing of arbitrary precision integers by io.print etc.

library/stream.string_writer.m:
	Make the print family of predicates print the decimal representation
	of integer/0 values instead of their underlying representation.

library/io.m:
	Update the documentation of io.print to conform to the above change.

	Fix a typo: s/hander/handler/

NEWS:
	Announce the above change.

tests/hard_coded/Mmakefile:
tests/hard_coded/print_bigint.{m.exp}:
	Test printing of integers with io.print.
Make string/1 handle version_arrays in the same way as io.write/3 etc.

library/string.m:
	As above.
NEWS:
	Add a section for 14.01.1 news.

	Mention the above change.

tests/hard_coded/string_string.{m,exp}:
	Extend this test case to cover arrays and version arrays.