i18n-de: Rework and fixes continued
i18n-de: update po and remove fuzzies
merge with stable
mq: rename secretcommit to newcommit

This function create secret changeset only when mq.secret is true
convert/bzr: expect unicode metadata, encode in UTF-8 (issue3232)

Before this patch, metadata and file names were interpreted like:
- unicode objects were converted to UTF-8
- non unicode objects were left unchanged

Looking at the code and bzr being known for transcoding filenames, we expect
everything to be returned as unicode objects, and we want to encode them in
UTF-8, like the subversion source does. To do that, we just remove the custom
implementation of .recode().
convert/bzr: convert all branches (issue3229) (BC)

Instead of opening the target bzr checkout as a single branch, we try to open
it as a repository. This has the following effects:
- All branches are now converted
- bzr branch names are preserved. Previously, the selected branch was always
  converted as 'default'. Branches without a name or 'trunk' are mapped to
  'default branch.
- Lightweight checkouts are no longer supported. Maybe they can be, I did not
  try to fix that at all.

Implementation notes:
- This was a quick fix, I have no knowledge of bzr API besides browsing 2.0.3
  sources.
- The fix was only tested on OSX against bzr 2.4.2.
- Tags discovery does not handle collisions. I have no idea how tags work in
  bzr so maybe such collisions are not possible.
convert/bzr: handle empty bzr repositories (issue3233)
convert/bzr: test tags conversion
merge with stable
merge with i18n stable
merge with i18n stable
subrepo: add basestate method

This will allow us to sort out what's going on with state .hgsubstate
files more precisely.
subrepo: rewrite handling of subrepo state at commit (issue2403)

When the contents of .hgsubstate are stale (either because they've
manually been tweaked or partial updates have confused it), we get
confused about whether it actually needs committing.

So instead, we actively consult the parent's substate and compare it
the actual current state when deciding whether it needs committing.

Side effect: lots of "committing subrepo" messages that didn't
correspond with real commits disappear.

This change is fairly invasive for a fairly obscure condition, so it's
kept on the default branch.
largefiles: reduce OR-ing of same conditions
largefiles: reduce redundant splitstandin/standin combination

assumptions:

    - 'lfutil.splitstandin(f)' strips 'f' of '.hglf/', if it can
    - 'lfile(f)' examines 'lfutil.standin(f) in manifest'
    - 'lfutil.standin(f)' adds '.hglf/' to 'f'

and

    - 'f' should start with '.hglf/' there, because it is already
      examined by 'lfutil.isstandin(f)'

then:

    lfile(lfutil.splitstandin(f))
      => lfile(<f without '.hglf/'>)
      => lfutil.standin(<f without '.hglf/'>) in manifest
      => <<f without '.hglf/'> with '.hglf/'> in manifest
      => f in manifest
windows: use 'str.replace()' instead of combination of split() and join()

'str.replace()' is twice (or more) as fast as combination of split()
and join().

combination of split() and join() in current 'util.pconvert()'
implementation comes only from historical reason when win32mbcs
extension was introduced.
merge with i18n stable
i18n-de: fix rst markup in command output (issue3247)
merge with i18n
merge with stable