split ensure-installed fn out
Remove ensure-installed-and-require

After thinking about it, this function isn't needed and in fact is
possibly mildly harmful.  In most cases, emacs provides an autoload
system which ensures packages will be loaded when particular functions
from those packages are called.  This means even if you haven't
`require`d a package yet, simply calling an appropriate function will
cause the package to be loaded.

Further, not all packages are named the same as the file you need to
require.  [Helm][] is an example here: you install a package `helm` but
you require `helm-config`.

I found separating installation from require made me think about whether
I needed to require each package individually.  Taking them in turn:

 - diminish: no, calling the `diminish` fn will autoload
 - ido-ubiquitous: no, calling `ido-ubiquitous` will autoload
 - smex: not sure. since you need to set `smex-save-file` before
   calling `smex-initialize` i left a require in, defensively.
 - magit: no. `magit-status` will autoload
 - exec-path-from-shell: no, will autoload
 - cider: no, will autoload on `cider-jack-in`
 - clojure-mode: no, will autoload on opening a `.clj[sx]?` file
 - paredit: no, will autoload when `enable-paredit-mode` is called
   - it turns out I don't need the bit where I specify an autoload
     myself, as the paredit package does that for me
   - also, using `eval-after-load` means that clojure-mode and
     scheme-mode don't need to have already been loaded at the point
     where I load paredit
  - puppet-mode: no, will autoload when opening a `.pp` file
  - markdown-mode: no, will autoload when opening a `.md` file

You can see autoload behaviour for a package called "foo" by viewing the
"elpa/foo-20140101.123/foo-autoloads.el" file.

cc @otfrom

[Helm]: https://github.com/emacs-helm/helm