Add priority search queue ADT

This implements a priority search queue ADT. This is a kind of blend
between priority queues and search trees; in contrast to a priority
queue, it also allows changing priorities of keys, looking up keys and
deleting keys.

This is an implementation based on the ICFP 2001 paper "A Simple
Implementation Technique for Priority Search Queues" by Ralf Hinze.
http://www.mercurylang.org/list-archives/users/2014-October/007804.html

Commit message paraphrased from Matthias' e-mail.
http://www.mercurylang.org/list-archives/reviews/2014-October/017414.html

library/psqueue.m:
    Add new module.

library/MODULES_DOC:
library/library.m:
    Include new module.

tests/hard_coded/Mmakefile:
tests/hard_coded/psqueue_test.exp:
tests/hard_coded/psqueue_test.m:
    Add test for psqueue.m
Update psqueue documentation.

library/psqueue.m:
    As atove.
Update psqueue.m code style.

library/psqueue.m:
    Update coding style.

    In min_view/1 there's two variable names are incorrect (they should be
    swapped) this doesn't change the program but may confuse people reading
    the code.

tests/hard_coded/psqueue_test.exp:
tests/hard_coded/psqueue_test.m:
    Also improve the coding style in the test code.
    Add lables to all of the test outputs.
Update psqueue.m's interface to match other library modules.

library/psqueue.m:
    Make the psqueue interface more consistent with other standard library
    modules.

tests/hard_coded/psqueue_test.exp:
tests/hard_coded/psqueue_test.m:
    Update tests.