Eshell: Try to untangle the dependencies; move 'provide's to the end

* lisp/eshell/esh-arg.el: Move defsubst and vars before first use.
Don't require `esh-mode but esh-util instead.

* lisp/eshell/esh-cmd.el: Require esh-module and esh-io.

* lisp/eshell/esh-ext.el: Don't require esh-proc nor esh-cmd.
(eshell-external-command): Require esh-proc for
eshell-gather-process-output.

* lisp/eshell/esh-mode.el: Don't require esh-io nor esh-var, but
require esh-arg.
(eshell-directory-name): Move from eshell.el.

* lisp/eshell/esh-module.el: Don't require eshell.

* lisp/eshell/esh-opt.el: Don't require esh-ext at top-level.
(eshell--do-opts, eshell-show-usage): Require it here instead.

* lisp/eshell/esh-proc.el: Don't require esh-cmd, but require esh-io.
(eshell-reset-after-proc, eshell-record-process-object)
(eshell-gather-process-output, eshell-send-eof-to-process):
Require esh-mode and esh-var here.

* lisp/eshell/esh-var.el: Require esh-module, esh-arg, and esh-io.

* lisp/eshell/eshell.el: Require esh-module, esh-proc, esh-io, and esh-cmd.
But don't require esh-mode.
(eshell-directory-name): Move to esh-mode.
(eshell-return-exits-minibuffer): Don't bind 'return' and 'M-return'
since we already bind RET and M-RET.
1 job for master in 51 minutes and 5 seconds (queued for 1 second)
Status Job ID Name Coverage
  Test
failed #1267
test-all

00:51:05

 
Name Stage Failure
failed
test-all Test
make[2]: *** [check-doit] Error 1
Makefile:313: recipe for target 'check-doit' failed
make[2]: Leaving directory '/builds/emacs/emacs/test'
Makefile:288: recipe for target 'check-expensive' failed
make[1]: *** [check-expensive] Error 2
make[1]: Leaving directory '/builds/emacs/emacs/test'
make: *** [check-expensive] Error 2
Makefile:962: recipe for target 'check-expensive' failed
ERROR: Job failed: exit code 1