Add PS_NAME attribute in info mapping if possible. Needed to
facilitate compatibility with code relying on behaviour of older
versions of FreeType.

Background: modern FreeType implementations return the FONT_FAMILY and
FONT_SUBFAMILY SFNT attributes as family and style in the mapping
returned by the info() function; older versions (at least FreeType
2.1.9 and older) returned PS_NAME and a string derived from other data
for those fields.

The problem was noticed when a Roxen customer wanted to update their
Roxen CMS installation from 4.5 (based on on Pike7.4 with
FreeType2.1.9) to a more modern version. Additional fixes in Roxen
will be required for full compatibility, but this Pike change makes
the necessary data available to enable that. (Roxen internal note:
RT#21337.)
Protocols.HTTP.Server: allow using factories for Request objects
added Protocols.WebSocket
Compiler: Changed line number file name representation.

The program line number table now contains indices into
the program string table to keep track of file names,
instead of having a binary dump of the file name directly
in the line number table. This makes for a somewhat cleaner
line number code.

Fixes old FIXME.
Made the server actually respond with ALPN protocol.
Fixed typo.
Save one realloc for wide string file names and  moved trivial code into make_plain_file.
Use the API instead of looking at ADT.Stack internals.
Protected some more stuff and added #pike header.
Protocols.WebSocket: actually use argument
Protocols.WebSocket: API change

WebSocket connections are now represented by a seperate class. This
will make integration (e.g. with Roxen) much easier. Additionally, the
WebSocket protocol is essentially symmetric, so the same class could be used
for clients. Sorry about the js-like events.
Search.Queue: Added some AutoDoc.
Search.Queue: Fixed typo in Base.
Search.Queue: Added enum with the defined stages.
Search.Queue.MySQL: Removed redundant inherit.

Web.Crawler.Queue is already inherited via Search.Queue.Base.
Added an _object_size() function.

It tries to aproximate how large an object is in RAM.
Updated pp_memory_usge to use the new fields in memory_usage.

Also format it slightly differently.
Fixed count_all in the block allocator.

The memory_info() function had a tendency to return values like
0 objects, total 120Kb
Added pp_object_usage, similar to pp_memory_usage

The function uses the newly added size_object.

It is useful to debug memory usage in programs that do not, mainly
keep its memory in C-objects (as an example, Image.Image is not
correctly counted)
Trivial fix to Regexp.PCRE.Plain autodoc to make it appear in docs