valgrind: pcretest: Mark data buffer as unaddressable after the end of the data
The data buffer is (usually) bigger than the actual data processed. This patch
explicitly marks the excess buffer as unaddressable, so that running under
valgrind will signal invalid memory accesses to it. This seems a better solution
than memmove'ing the data to the end of the buffer to use the allocated memory
region as the valgrind marker.

valgrind: Mark excess code space as unaddressable
When PCRE compiles a pattern, the required space is first estimated and this
amount of memory is then allocated. For some patterns, the actually required
code space is less than that, which means that the end of the code space is
unused. This patch marks that region as unaddressable, so that valgrind will
signal an error when it is accessed.

valgrind: Add --support-valgrind configure option
When --enable-valgrind is passed, PCRE will annotate some memory regions
as unaddressable, aiding in finding invalid memory accesses when running
under valgrind. This is useful mostly for debugging PCRE itself, and thus
probably should not be enabled in release builds.

pcre32: pcretest: Add -32+ option
Add -32+ option that selects 32-bit mode like -32, but additionally
modifies the characters in the data strings to have the bits > 21 set,
to test that the masking works.

pcre32: docs: Document that non-character codepoints are excluded
Document that UTF-8/16/32 validity checks now exclude the non-character
code points, which are U+FDD0..U+FDEF and the last two code points in each
plane, U+??FFFE and U+??FFFF.

pcre32: utf: Remove unused replacement in PRIV(ord2utf)
The code replaced surrogates and characters > 10ffff with fffe, for no apparent
reason. Taking this code out still lets the test suite pass. We cannot assert
however that the character is a valid unicode character since we do need to handle
e.g. 10ffff here.

pcre32: pcretest: Don't convert data line to UTF-8 first
While reading the data lines, directly put them into the 8, 16 or
32 bit buffers instead of first converting them into UTF-8 and only
afterwards converting that buffer to 16/32 bit. This is necessary so
the in 32 bit mode the \x{} escapes can use the full 32-bit range
(while the non-standard 5/6 byte UTF-8 sequences can only express
characters up to 31-bits).

pcre32: Mask out bits >= 22 on 32-bit characters in UTF-32 mode
UTF-32 only uses 21 bits, so the upper bits may be used to store flags
etc. To allow passing the unmodified internal buffers to pcre32, make
pcre32 mask out those upper bits.
TODO: do the same for the JIT compiler, and add tests

pcre32: fullinfo: Add variants of (FIRST|LAST)LITERAL that are 32-bit clean
Since for pcre32 the whole range of the output is already used up
for the character itself, return the special values separately.

pcre32: compile: Encode back references as negative numbers
Return the back reference as negative numbers from check_escape(),
instead of adding them to ESC_REF. This way, there will never be an
overflow.

pcre32: compile: Make check_escape return the data character in an out param
check_escape needs to return both the escape code and possibly a data
character. Return the data character in an out param instead of mixing
it with the escape code; this is in preparation to making the character
a pcre_uint32 to enable the full 32-bit range in pcre32 in non-UTF-32
mode.

pcre32: compile: Fix \H and \V character ranges for pcre32
Go up to 0xffffffff, and move the tests to the split 16- and 32-bit
tests because the output differs.
TODO: these character ranges look rather odd for non-UTF mode... bug?

pcre32: Add 32-bit library
Create libpcre32 that operates on 32-bit characters (UTF-32).
This turned out to be surprisingly simple after the UTF-16 support
was introduced; mostly just extra ifdefs and adjusting and adding
some tests.

General spring-clean of EBCDIC-related issues in the code, which had decayed
over time. Also the documentation. Added one test that can be run in an ASCII
world to do a little testing of EBCDIC-related things.

Typos in PrepareRelease; include 16-bit in make distcheck; fix RunTest and
RunGrepTest when building in non-source directory; problem in pcretest when no
UTF or 16-bit support; other tidies consequent on building a tarball.

Refactoring to reduce stack usage for possessively quantified subpatterns. Also
fixed a number of bugs related to repeated subpatterns. Some further tidies
consequent on the removal of OP_OPT are also in this patch.

(1) Move internal flags out of the options field, to make room.
(2) \r and \n must be explicit to trigger the special CRLF handline exception.
(3) (?J) at the start now sets JCHANGED as well as DUPNAMES.

Create the PrepareRelease script to process the documentation and create the
.generic files for distribution, also to remove trailing spaces. Update a lot
more of the build-time documentation. Arrange for PrepareRelease and its
sub-scripts to be distributed.

Updated the support (such as it is) for Virtual Pascal, thanks to Stefan
Weber: (1) pcre_internal.h was missing some function renames; (2) updated
makevp.bat for the current PCRE, using the additional files !compile.txt,
!linklib.txt, and pcregexp.pas.

1. Move the comment about version numbers from pcre.h.in to configure.ac
because that's where they are now set.
2. Update all the man pages to remove the use of .br and .in because this
causes trouble for some HTML converters. Also standardised the final sections
giving author information and revision date.
3. Update the maintain/132html man page converter to handle .nf/.fi and to barf
at .br/.in.

This is a second preliminary update, after having done a test build and also a
check of the maintenance programs. The version is now 7.1-RC1. In autogen.sh,
autoheader is now before automake, and Tech.Notes (being now in the "maintain"
directory) are no longer distributed.

Applied Bob and Daniel's patches to convert the build system to automake. Added
the maintain directory, containing files that are used for maintenance, but are
not distributed. This is an intermediate step.