Don't allow matching on functions without justification

Otherwise we have patterns which type check, and which are considered
total, but which can't be properly check at run-time.

Fixes #138
Update CHANGELOG
Use _ if all alternatives are unmatchable
Library changes: Please read details below!

Builtins now contains only those things required to support builtin
syntax. Everything else moved into Prelude, which has been reorganised
a little (extra files for Bool, Classes and Basic functions such as
id and composition).

New --nobuiltins flag, which is intended only to built the Builtins
module. --noprelude now loads Builtins. --nobuiltins implies
--noprelude.

NOTE: You may need to delete the libs/ directory and check it out again
to be sure there are no stale ibc files (we really need to fix the
build process!)
Remove needless Prelude imports
Add --nobasepkgs flag

Intended for use when building the base packages, so that they don't
look at installed versions. Simply removes 'prelude' and 'base' from
the package list.
Compare recursively when assessing collapsibility.
Fix conj-disj in collapsibility check.
Extend forceability over recursive arguments to constructors.
Fix the `known' predicate.
Use previously forced arguments in new iterations.
Cleanup.
Fix forceable arg union at constructor targets.
Express forceability more concisely.
Fix disjointness check.
Intercommit (absolutely not working).
Intercommit.
Use a ForceMap instead of a list.
Fix an inexhaustive pattern.
Fix a bug, port to new codebase.