merge next into master

```
A summary of the changes being merged:

  (+ big changes, - small changes)

Yann Hodique
- a fix that should already be in master
- some fixes for cl-lib support (see below)

Ramkumar Ramachandra
- magit-key-mode: don't delete other windows to show menu

Moritz Bunkus
+ Add support for "git cherry"

Jonas Bernoulli
- support for fontifying magit `with' and `define' macros
  not enabled by default
- sanitize tests/run-tests.el and Makefile
- add some more directories to `load-path' in run-tests.el
- require forgotten features and quiet byte-compiler
+ refactor (and fix) magit-section-case and related functions
- magit-run*: only advertise key for *magit-process* if there is one
- magit-run*: only magit-mode buffers need to be refreshed
- magit-builtin-completing-read: handle REQUIRE-MATCH safely
+ various improvements to magit-push and magit-push-tags
```

Most changes are very safe and if anything should break easy to fix.

The changes to `magit-section-case` and friends are big but since I have been on `next` ever since I made these changes I am confident they are good too.

The changes to `magit-push` and `magit-push-tag` are in my eyes the only ones with some potential for causing problems as I am overwriting these functions in my `magit-push-remote.el` and therefor have not used these implementation for longer than a few days. But since I first made these changes in `magit.el` and then built on that to create `magit-push-remote.el` I also think that these changes are good.

Tests succeed locally. We'll see what travis makes of it.