Namespaces look like packages in Java.  Gont language reserve
"gont.*" namespace for it's own use.  Users can use namespaces like
"pl.wroc.uni.ii.mjm.mysql" and similar.


New syntax, top-level declarations:

NS-NAME -> ID . ID
         | ID . NS-NAME

  First ID can be short name of namespace.

namespace NS-NAME;

  Define namespace this module will reside in.

namespace ID = NS-NAME;

  Define short name for given namespace.
  
open ID;
 
  Lookup named module in all open namespaces and open it.

open NS-NAME;

  Add NS-NAME to list of open namespaces.
  
open ID :: ID;

  First ID is short namespace name, second is module name.


qid will change from ID | ID :: ID to ID | ID :: ID | ID :: ID :: ID.
In 3-ID form first is short namespace name, second is module name and
third is symbol name.


Standard namespaces:

gont.core
gont.std
plus one for each addon library, distributed with Gontc, like: gont.xml etc.

gont.user -- default namespace for modules.

Each module starts with implicit:

	namespace std = gont.std;
	open gont.core;
	open gont.std;
	open Core;

If there is no namespace declaration before first declaration that is not
'namespace' or 'open' following is also assumed:

	namespace gont.user;
	open gont.user;

There is no implicit 'open foo.bar' after 'namespace foo.bar' specified
by user.

It is an error to redefine namespace name for module.


Lookup algorithm for interface files:

lookup foo.bar.baz::Qux
  for DIR in -I_PATH do
    if test -f DIR/qux.xgi -> return it
    if test -f DIR/foo/bar/baz/qux.xgi -> return it

lookup Qux:
  for NS in OPEN_NAMESPACES
    lookup NS::Qux
    
