Doc: Moved identify_cycle() documentation to proper place.
Tools.AutoDoc: Support the string(zero) syntax.

This is the type for the empty string.
Runtime: Type-stack mmap fixes.

Mmapping stdin is not a good idea...

mmap() doesn't return NULL on failure, but MAP_FAILED. This caused some
invalid pointers to be used on mmap failure.

Fixes fatal "Type mark stack overflow." on init on Solaris.
Image.PNG: encode() now survives options being UNDEFINED.
TYPE_SUBTYPE: avoid undefined behavior

(X) << 16 cannot always be represented by an int
type system: do not over allocate pike_type_mark_stack
testsuite: test string range optimizations
Strings: correctly store character ranges

Character ranges of strings are stored in two unsigned chars. For wide
strings, the values between 0 and 255 represent blocks of 255 and
(1<<24) characters, respectively.

The previous code had several issues:

1) After calculating the actual min/max values of the character range,
   these value were rounded up, which could lead to an overflow. The
   result was that both min and max could end up being 0. An example is
   the string (string)({ (1<<16)-1 }).
2) The 32 bit case used blocks of 16 bit instead of 24 bit.
Fuse: removed some unused code
block_allocator: removed some INLINE and warnings for unused parameters
Interpreter: renamed some variables

When compiling without bytecode and with compilers without computed
goto, the variable p is always struct program *. Use addr for OPCODE_T *,
instead, to silence warnings.
Compiler: silence parentheses warnings in clang
Image: removed some unused functions
threads: removed some unused functions
ADT.CritBit: avoid overflow