magit-section-case: don't bind any slots

A "case" function should only dispatch, not also establish bindings.
Besides the importance of this macro is decreasing anyway so having
to write some additional code that previously was not necessary is
not all that terrible.
improve and document magit-section-{match,when,case}

Also adjust the output of `magit-describe-section' to be more useful
for people who have just read the doc-string of `magit-section-match.'
Merge branch 'trim-case' into next
magit-describe-section: move definition
magit-copy-as-kill: move definition
magit-git-executable: except on windows, use just the name

Since f0186c88732e543d9487082405685fa0a2688b70 `magit-git-executable'
was set to the full path to the executable, which becomes problematic
when connecting to a remote repository using Tramp and the executable
is not installed in the identical location on that system.

On Windows keep using the full path, because here multiple "git.***"
are installed and it makes a big difference which is used.  I would
much rather have a handful of Windows users report that they cannot
use Magit remotely than to have many more users complain that "Magit
is nice, but soooooooo slow on Windows".

We could use different variable for local and tramp Git, I suppose.
But the proper way of testing that is `file-remote-p', and that is
to expensive to run over and over again.  And I don't like caching.