This should return the best upgrader to step this format towards the
current default format. In the case of plugins we can/should provide
some means for them to extend the range of returnable converters.

Do not use a shared repository for the target,
even if one is available.

create_prefix

Create any missing directories leading up to
to_transport.

use_existing_dir

Use an existing directory if one exists.

stacked_on

A url to stack any created branch on, None to follow
any target stacking policy.

stack_on_pwd

If stack_on is relative, the location it is
relative to.

repo_format_name

If non-None, a repository will be
made-or-found. Should none be found, or if force_new_repo is True
the repo_format_name is used to select the format of repository to
create.

make_working_trees

Control the setting of make_working_trees
for a new shared repository when one is made. None to use whatever
default the format has.

shared_repo

Control whether made repositories are shared or
not.

vfs_only

If True do not attempt to use a smart server

Returns

repo, controldir, require_stacking, repository_policy. repo is
None if none was created or found, controldir is always valid.
require_stacking is the result of examining the stacked_on
parameter and any stacking policy found for the target.

Bzr control formats use this disk format string to identify the format
over the wire. Its possible that other control formats have more
complex detection requirements, so we permit them to use any unique and
immutable string they desire.