magit-change-what-branch-tracks: use magit-refresh
magit-mode-get-buffer-{,create}: add functions

Add the functions `magit-mode-get-buffer' replacing `magit-find-buffer'.
Also remove `magit-find-status-buffer', an old wrapper around the other
removed function; and add `magit-mode-get-buffer-create' a new wrapper
around the other new function (which does not serve the same purpose as
the removed wrapper).

This makes it possible to make any Magit buffer "repository local".
Currently each repository has its own status buffer but all other
buffers are shared between repositories.  By inserting %t or %T into the
the respective "buffer name" this can now be customized.

The buffer-names as stored in `magit-MODE-buffer-name' are now actually
buffer-name-formats.  Don't rename the variables yet (or ever?) as there
will be related changes soon.
magit-mode-display-buffer: add MODE argument, return buffer
magit-mode-setup: add SWITCH-FUNC argument

This makes `magit-mode-init' unnecessary.  Don't remove it just yet,
as some of its current callers still need some work.
magit-status: use magit-mode-setup

In `magit-status' use `magit-mode-setup' instead of `magit-mode-init'.
magit-diff: use magit-mode-setup

In `magit-diff' use `magit-mode-setup' instead of `magit-mode-init'.
magit-diff-stash: use magit-mode-setup

In `magit-diff-stash' use `magit-mode-setup' instead of `magit-mode-init'.
magit-show-commit: use magit-mode-setup

In `magit-show-commit' use `magit-mode-setup' instead of `magit-mode-init'.
magit-stgit-show: use magit-mode-setup

In `magit-stgit-show' use `magit-mode-setup' instead of `magit-mode-init'.
Merge branch 'pr/mode-setup'