Introduce new test harness named "noise"

"noise" runs ctags with inputs derived from input.* files under Units.
"noise" is designed for testing a something boundary in parsing code.

Here "deriving" means applying following operation to
the the original input:

    reduction: deleting one byte at a position, or

    injection: inserting something one byte at a position

The position is chosen from the beginning to the end of file; for each
position in the range "noise" applies one of the operations to generate
the derived input file and run ctags with the input.

The injected byte is chosen from charset [^b-zA-Z1-9]; for each byte
in charset "noise" applies the injections to generate the
derived input file and run ctags with the input.

Consider the original input is "abc".
The derived input are

    reduction: "bc"
    reduction: "ac"
    reduction: "ab"
    injection: "aabc"
    injection: "aabc"
    injection: "abac"
    injection: "abca"
    injection: "0abc"
    injection: "a0bc"
    injection: "ab0c"
    injection: "abc0"
    injection: "!abc"
    injection: "a!bc"
    injection: "ab!c"
    injection: "abc!"
    injection: "@abc"
    injection: "a@bc"
    injection: "ab@c"
    injection: "abc@"
    ...

When ctags enters an infinite loop (detected by 2 seconds
timeout) or exits with non-zero status for a derived input,
"noise" recognizes the derived input triggers a bug of
ctags; "noise" runs "shrink" internally to find a minimal
input for reproducing the bug; and stops.

Following an example session of noise:

    $ misc/units noise --run-shrink --languages=Ada Units | tee /tmp/ADA
    Noised-fuzzing (Ada)
    ------------------------------------------------------------
    Testing cases derived from: Units/generalized_stack.ads.t/input.ads
    ............................................................
    oooooooooooooooooooooooooooooooooooooooooooooooooo -  50/1764
    ... <snipped>
    oooooooooooooooooooooooooooooooooooooooooooooooooo -  1700/1764
    ooooooooooooooooooooooooooooooo!                   -  1731/1764
    [unexpected-status(1) Ada] Units/generalized_stack.ads.t/NOISE-INPUT-REDUCED-1731-33.tmp
    Shrinking Units/generalized_stack.ads.t/NOISE-INPUT-REDUCED-1731-33.tmp as Ada
    ............................................................
    [0       1763]...failed(139)
    ... <snipped>
    [383     1542]...failed(139)
    [384     1542]...ok(0)
    Minimal badinput input: Units/generalized_stack.ads.t/NOISE-SHRINK-REDUCED-1731-33.tmp
    ............................................................
    Ada.Finalization; use Ada.Finalization;

    package GenStack is
	-- This is the stack type.
	type Stack is new Controlled with private;

	-- This is the base type for nodes.  Client packages must derive their
	-- nodes from StackData.  Since it comes from Controlled, the user can
	-- override the Initialize, Adjust, and Finalize methods as needed.
	type StackData is new Controlled with null record;

	-- Initialization operations.
	procedure Initialize(S: in out Stack);
	procedure Adjust(S: in out Stack);
	procedure Finalize(S: in out Stack);

	-- Stack operations.
	procedure Push(S: in out Stack; D: StackData'class);
	procedure Pop(S: in out Stack; D: in out StackData'class);
	procedure Top(S: Stack; Data: in out StackData'class);
	function Empty(S: Stack) return Boolean;

	private
	-- Pointer to the node type.
	type Node;
	type Node_Ptr is access Node;

	-- Here is the generalized stack itself.  We would just make it the
	-- pointer itself, but it needs to be a record so it can be in a with.
	type Stack is new Controlled with record
	    Head: Node_Ptr;
	end record;

	-

In this example Ada parser is tested.
"noise" pick up Units/generalized_stack.ads.t/input.ads as the original
input and repeats reductions for each position.

       oooooooooooooooooooooooooooooooooooooooooooooooooo -  50/1764

This line means the size of the original input is 1764 and
reductions at the position from 0 to 50 are done. Here "-" means
reduction. "o" means ctags exits with 0 status.
A line for injections is like:

       oooooooooooooooooooooooooooooooooooooooooooooooooo +@ 50/708

Here "+" means an injection. "@" is injected byte.

       ooooooooooooooooooooooooooooooo!                   -  1731/1764

This means ctags exits unexpected status when reducing a byte at 1731.

    Shrinking Units/generalized_stack.ads.t/NOISE-INPUT-REDUCED-1731-33.tmp as Ada
    ............................................................
    [0       1763]...failed(139)
    ... <snipped>
    [383     1542]...failed(139)
    [384     1542]...ok(0)
    Minimal badinput input: Units/generalized_stack.ads.t/NOISE-SHRINK-REDUCED-1731-33.tmp
    ............................................................
    Ada.Finalization; use Ada.Finalization;

"shrink" runs Units/generalized_stack.ads.t/NOISE-INPUT-REDUCED-1731-33.tmp as input
and writes the shrunk input to Units/generalized_stack.ads.t/NOISE-SHRINK-REDUCED-1731-33.tmp.
There is no meaning in "33".

Unlink "fuzz", "noise" chooses the original input for derivations only if ctags --guess-language
for the original is the same as the target language for testing; "Ada" is the target language
above example output.

TODO:

	- Write docs/*.rst.
	- Integrate to testing.mak

Signed-off-by: Masatake YAMATO <yamato@redhat.com>