Add some validation code

* namespace.el (namespace--validate, namespace--validate-ns)
(namespace--validate-qsym, namespace--validate-unique): New.
(namespace--define,  namespace--add-internal): Use it.
Implement delete-namespace and unintern.

* namespace.el (namespace--unintern, namespace-delete-namespace)
(namespace--read-namespace-name, namespace--delete-qsym)
(namespace--check-unintern-conflict): New.
Steps towards import-sets instead of shadowing symbols.

* namespace-test.el: ([namespace] c, [namespace] d, test-c.1)
(test-c.2, test-d.1): Disable until :import-except works.

* namespace.el (namespace--table)
(namespace--except-table, namespace--only-table): New structs.
([struct] namespace): Remove shadow slot.
([struct] qsym): Rename name slot to id. Update callers.
(namespace--table-lookup, namespace--hash-values)
(namespace--table-map, namespace--table-values)
(namespace--table-ns): New.
(namespace--lookup): Use it.
(namespace--accessible-qsyms, namespace--shadow)
(namespace--shadowing-import): Deleted. No longer needed.
(namespace--unuse1, namespace--unuse): Deleted. currently not
supported.
Implement :only and :except syntax.

* namespace.el (namespace--validate-ns, namespace--use1)
(namespace--check-use-conflicts): Use import sets propely.
(namespace--sexp-filter-p, namespace--parse-filter)
(namespace--sexp-import-set-p, namespace--parse-import-set): New
helpers.
(namespace--parse-options, namespace--define, define-namespace):
Support :only and :except. Drop :use, :import-from.
(namespace--apply-filters, namespace--add-import-set): New.

* namespace-test.el, namespace-tools.el, cl-ns.el: Use new syntax.
Export conflicts are now warnings.

Previously everything was an error, that made it difficult/impossible
to continue after export conflicts.  Conflicts during imports still
cause errors but conflicts (in other namespaces) caused by additional
exports are warnings.  Those other namespaces are also marked as
"inconsistent".

* namespace.el (namespace--set-exports): Renamed from
namespace--add-exports.  Check for concflicts after update.
(namespace--set-imports): Do everything what namespace--use1 used
to do but check all import conflicts first.
(namespace--validate): Skip "inconsistent" namespaces.
(namespace-delete-namespace, namespace--delete-qsym): Deleted for
now.  Maybe bring it back if needed.
(namespace--unintern, namespace--check-unintern-conflict)
(namespace--export, namespace--add-use, namespace--import)
(namespace--use1, namespace--use): Deleted. No longer needed
(namespace--check-export-conflicts): Also consider internal and
external symbols.  Warn and mark namespace as inconsistent if
check fails.
(namespace--mark-inconsistent, namespace--imports-conflicts): New
helpers.
(namespace--check-import-conflicts): Factor stuff out into
namespace--imports-conflicts.
(namespace--collect-warnings, namespace--warn)
(namespace--warning-to-string, namespace--warning-to-sexp)
(namespace--warning-handler): Code for consistent warnings that
can also be used by test suite.
([error] namespace-inconsistent): New error.
([error] namespace-unintern-conflict, namespace-use-conflict): No
longer used.
(namespace--find-imported, namespace--find-external)
(namespace--find-internal): New helpers.
(namespace--ct): Add abbeviations for qsyms and ids.
([defstruct] namespace): Rename exporters to importers; importers
to users. Hopefully less confusing.  Add slot for "inconsistent"
mark.
(namespace--define): Use new code.
* namespace-test.el (test-conflict.1, test-conflict.2)
(test-conflict.3)
(test-conflict.4, test-conflict.5, test-conflict.6): Updated for
new errors/warnings.