Overhaul emacs lisp

Overhaul the `emacs-lisp` syntax checker.

# Rationale

Make the syntax checker more flexible, customizable and predictable.

# Feature

- Add new `option-list` cell to support the new options
- Add new `flycheck-emacs-lisp-load-path` option to customize the load path for `emacs-lisp`
- Add new `flycheck-emacs-lisp-initialize-packages` option to customize whether to initialize packages via `package-initialize` for `emacs-lisp`
- Add new `flycheck-emacs-lisp-package-user-dir` option to customize the package directory to use for the `emacs-lisp`

# Breaking changes

`emacs-lisp` does not initialize packages by default anymore.  To restore the old behavior, add the following to `init.el`:

```scheme
(setq-default flycheck-emacs-lisp-initialize-packages t)
```

However, this is advised against.  Instead, set this variable buffer or directory local as needed by the corresponding file.