tests: Remove duplicated declarations.
Build: Redo --enable-error-on-warning.

This will enable -Werror for a decent selection of warnings in the C code.
In particular, non c89 // comments and declarations cause failures.

There's two macros, ALDOR_ERROR_ON_WARN and ALDOR_STRICT_COMPILE.
ALDOR_STRICT_COMPILE tries to find the best compile flags given the
compiler, and ALDOR_ERROR_ON_WARN sets STRICTCFLAGS based on the call
to configure.
genfoam: Fixup position of assertion
foam: Add java related calling protocols.

There are 3 new protocols
- Methods      - a.doSomething(x, y, z)
- Constructors - new WhatNot(a, b, c)
- Static calls - System.out.println(x)

Also add new and Java as symbols that are special.
strops: Add strSplitLast.. Handy for breaking a.b.Something into package
and class name.

Plus a test.
types: Add support for java types.

The idea is that an import will be something along the idea of:

import Runnable: with { new: () -> %;
			(%, 'run') -> ()-> ();
} from Foreign Java "java.util";

This will introduce a type (Runnable), which can then be used as follows:

	r: Runnable := new();
	r.run()

Runnable will initially not work with normal types, so no List(Runnable),
but maybe later.

This assumes that a.b binds tighter than b(x), so that
a.b(x) is interpreted as (a.b)(x), so no need for new syntax.
genfoam: Remove genfConstDebug - it was not implemented consistently and
didn't really display anything useful.
genfoam: Replace gen0IsLazyConst macro with a function (it wasn't
tfFollow-safe as it stood).
tinfer: Add a simple datatype for holding lists of errors.
src/general: StringList is now declared in strops.h
src: Add a test suite for errorset.  Doesn't do much, but if more is added
to the API there's some place to hang the tests.
formatters.c: Add String, StringList and ErrorSet to list of formatted
output.  String is a bit pointless, but makes StringList easier.
foam.c: Make foamToSEXpr a little more robust when presented with
lexical references to invalid locations.
foam: Add a foamNewPCallOfList function.

To be used later by java work.
foam: Add foamNewCCall function
foam.c: Tighten up foam audit around DEnv; a lexical level cannot appear
more than once in the same DEnv. (except for 0 and 4, which are special).

Actually, this could be even tighter, across a unit - lexical levels form
a tree, and DEnvs should reflect this, modulo 0 and 4, which represent a
level which is no accessed either by this function, or this function and
all lexically deeper children respectively.
optfoam: Allow foam to contain top level (Clos (Nil) (Prog))... this will
be useful later on.
Add "Java" as a supported language for imports
spesym.[ch]: Add java and avaj as symbols.. java converts to a java representation, avaj is the other way
round.  Apologies for the weak pun.
genjava: Don't use string literals as names; GJ_xxx is generally better.