Use defadvice to make eval-last-exp namespace-aware.

	Also for pp-eval-last-exp.

* namespace-tools.el (eval-sexp-add-defvars, pp-last-sexp): New
Advice.
(eval-sexp, eval-last-sexp): Deleted. No longer used.
(activate): Don't rebind C-x C-e.
Macroxpand commands

* namespace-tools.el (eval-expression, expand, expand-all): New
commands.
(activate): Bind them.
(pp, macroexpand1, macroexpand, macroexpand-all): New helpers.

* namespace.el (namespace--macrolet-env): Factored out from
(namespace--macroexpand-all-env): New helper using it.
(namespace-macroexpand-all, namespace-macroexpand1)
(namespace-macroexpand):  New.
(namespace-eval-in-namespace): Use namespace-macroexpand-all.
Fix eval-last-expression command.

* namespace-tools.el (eval-sexp-add-defvars): Needs to be a before
advice because eval-sexp-add-defvars calls macroexpand-all.

* namespace.el (namespace-macroexpand-all): Indirectly call
namespace--walk-toplevel to support defun and defstruct for
eval-in-namespace.
Better support for cl-labels inside namespaces.

* namespace-test.el (test-i.1, test-i.2, test-i.3, test-i.4)
(test-i.5, test-i.6): New tests.

* namespace.el (namespace--function-expander): Make some sanity
checks before rewriting.
(namespace--cl-labels-expander, namespace--macrolet-env):
cl-labels needs special handling.
(namespace--lexical-let-expander, namespace--labels-expander)
(namespace--flet-expander): Don't support these obsolete versions.