Ambiguities with expressions resolved

The expression
    a:A,b:B -> a+b
is a function expression. The left hand side is parsed as an expression and then converted to an
argument list.

Process expression:
    p: {a,b}: a::b::p

Set (i.e. predicate)
   {a:A,b:B: pred(a,b)}

One element set with one process
    {(p: {a,b}: a::b::p)} -- legal
    {p: {a,b}: a::b::p}   -- illegal "p:{a,b} is not a valid argument list"

Tags:
    r1: (p: {a,b}: a::b::p) = proc  -- legal
    r1: p: {a,b}: a::b::p = proc    -- illegal "r1:p:{a,b} is not a tag"

	new file:   ocaml/expression_ambiguities.md
	deleted:    ocaml/expressions.md
	modified:   ocaml/parser.mly
	modified:   ocaml/support.ml
	modified:   ocaml/test.e
	modified:   ocaml/validate.ml
Semantic actions for classes and declaration blocks added

	new file:   library/kernel/array.e
	modified:   library/kernel/kernel.eml
	modified:   ocaml/lexer.mll
	modified:   ocaml/parser.mly
	modified:   ocaml/support.ml