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.
Added yield/run example.
Simplified the evaluation of for and while loops.
Added Type.ty_of_const for uniformly obtaining types of constants.
Moved type checking functions to Ctx.