Turn the options into proper defcustom forms + other fixes

Things I've done:

* Turn the options into proper defcustom forms.
* Fix the bug when eshell is restarted on every pop.
* Replace (if a b) with (when a b).
* Add autoload on `shell-pop` to support package.el.

The core code is pretty much unchanged save for replacing `if` with `when`. I've removed all the "configuration" functions (of which half you've marked as interactive, yet they were broken) and replaced it with proper customize interface.