Allow multiple forms after keywords

* use-package.el (use-package-mplist-get):
(use-package-plist-get):
(use-package-mplist-keys): new functions

(plist-get-value):
(use-package): use new functions

(plist-keys): remove function

The idea is to allow a modified kind of plist where keys are all
keywords that appear in the list, and values are the intermediary
elements. If a keyword is present but it's another keyword just after it
(like (use-package :defer :config (setq foo 'bar))), its associated
value will be t. If a keyword is not present, its value associated value
will be nil. Otherwise the value will be the list of elements between
the keyword and the next keyword.
Merge pull request #84 from YoungFrog/mplist

Allow multiple forms after keywords
Move tests to separate file.
Add `bind-keys` macro
Merge pull request #86 from YoungFrog/mplist

Remove tests
Merge pull request #87 from Fuco1/bind-keys

Add `bind-keys` macro
Add better descriptions for lambdas, closures, keymaps
Add variable column width
Merge pull request #89 from Fuco1/special-form-desc

Add better descriptions for lambdas, closures, keymaps
Merge pull request #90 from Fuco1/variable-col-width

Add variable column width