Speed up string.format for integers.

library/string.format.m:
    We used to convert Mercury ints to strings by doing arithmetic on
    (arbitrary precision) integers. This diff changes things so we now
    compute only one one digit this way; the rest we compute using
    arithmetic on ints, not integers. In most cases, we should be able
    to avoid doing arithmetic on arbitrary-precision integers at all,
    but that is a more involved change.
Simplify the code paths for formatting integers.

library/string.format.m:
    Instead of deriving the settings of some parameters from the kind
    of unsigned integer conversion requested and then using those parameters,
    use the kind of requested conversion directly. It turned out that some
    of those parameters were being used only in some cases, but of course
    they were being set in all cases.

    Do not test for the same condition twice in a row. If you decide you
    need to reserve room for a prefix, why test again (using the same
    condition) whether you need to add the prefix?

    Avoid using arbitrary precision arithmetic if fixed arithmetic will do
    on all platforms that are at least 16 bit.

    Give some predicates better names.
Merge remote-tracking branch 'upstream/master' into merge-java-on-windows
Factor out commonalities in formatting floats.

library/string.format.m:
    As above.
Add two new options for querying the compiler.

Add two new options for querying the compiler.  The first new option,
--output-target-arch, prints the target architecture.  This is useful in
situations where you are working directly with the contents of the Mercury
subdirectory and --use-grade-subdirs is enabled.  (The directory names
generated by --use-grade-subdirs include the target architecture.) The second
new option, --output-class-dir, deals with a more specific instance of the
above.  It prints out the name of the directory in which the Mercury compiler
places generated Java class files.

Replace the use of 'fullarch' by 'target_arch' throughout the compiler.
(We still currently support '--fullarch' as a synonym for '--target-arch'
but that too will eventually be dropped.)

compiler/options.m:
	Add the new options.

compiler/mercury_compile.m:
	Implement the new options.

	s/fullarch/target_arch/

	Add an XXX comment about an inaccurate error message.

compiler/handle_options.m:
compiler/compile_target_code.m:
compiler/file_names.m:
compiler/make.program_target.m:
	Conform to the above changes.

doc/user_guide.texi:
	Document the new options.
Fix a typo in my last change.

doc/user_guide.texi:
	Fix a typo.
Merge remote-tracking branch 'upstream/master' into merge-java-on-windows