Merge pull request #4 from andrejbauer/master

Cleaned up examples directory, added info on editor support, messed with git (sorry)
Merge.
Fixed descriptions of instances.

Each instance now carries an optional description that we use when showing the
instance. Built-in instances are described by "standard I/O", "standard error",
and "random number generation". Instances created with new have no descriptions.
If an instance has a description, we show them as <description>, if not, we show
them as <instance #...>.

Beforehand, each instance already carried a description, but this was never
used, and each instance showed as <instance #...>, even the built-in ones.
Replaced the built-in "standard error" exception instance.

In a similar way that the function ref creates new ref instances, the built-in
function exception creates new exception instances. The only difference is that
an instance created with this function writes out a nicer runtime error when an
uncaught raise escapes to the toplevel.

Along the same lines, I created four exception instances to represent division
by zero, invalid arguments, assertion faults, and failure errors. Beforehand,
they were all triggered by the same instance, only with different arguments.
Now, they behave as usual exceptions and one does not need a special handler to
handle them.
Removed is_refutable from pattern.ml because it was buggy and not used, anyway
Error report for non-linear patterns that resembles ocaml error report
Added tests/errors/*.eff.out to .gitignore and .hgignore.

Thanks to Mark Jason Dominus for pointing it out.
Documented the Error module.
Minor clean up of code.

I closed some open modules, reordered some definitions of types to be in sync
with each other, and renamed a couple of constructors. Nothing essential has
changed, I am just clearing up the terrain for future more substantial changes.
Merge remote branch 'upstream/master'
Moved Syntax.ty_fv and some type desugaring from Eff to Desugar.
Cleaned up Type.

I replaced occurs_in_ty and refresh, which were previously independent
functions, with suitable calls to subst_ty and free_params. Maybe the end
function is a bit slower (occurs_in_ty before returned immediately when finding
a sought parameter), but they are vastly shorter and more maintainable.

In addition, I made made minor stylistic changes.
First version of exhaustive pattern matching check
Move exhaustive pattern check to a new module
Simplify pattern constructor type

Function arity returns number of required subpatterns for each pattern
constructor in a uniform way.
Implement is_irrefutable with check_pats

Also, clean up the find_constructors function.
Improve comments and clean up code in check.ml
Add support for records in exhaustiveness checks

When a record pattern is encountered, it is normalized - all fields are
specified in the order of definition, with those fields missing from
the pattern set to wildcards. After that, the recursion proceeds the
same way as for tuple patterns.
Find a counterexample for non-exhaustive matches

Note that exhaustiveness check is currently broken for most patterns
containing integers because Big_ints cannot be compared in Common.uniq.
Removed Big_int.

Big_int is an abstract type, and it complicates things whenever we use (=),
including functions such as List.mem and Common.uniq. Since we never use big
integers, I replaced them with ordinary integers.