bundle2: clarify stream parameter design in the documentation

Stream level parameter have very restricted use case. Clarify why we chosen a
textual format and point that applicative data goes in applicative parts.
bundle2: support for bundling parameter value

Parameter can now have a value. We use a `<name>=<value>` form inspired from
capabilities.

There is still no kind of escaping in the name or value, yet.
bundle2: support for unbundling parameter value

The unbundler now understand parameter value. introduced in the previous
changeset.
bundle2: urlquote stream parameter name and value

This introduces support for arbitrary characters in stream parameters name and
value.  The urlquote format has been chosen because it is:

- simple,
- standard,
- no-op on simple alphanumerical entry.
bundle2: urlunquote stream parameter name and value during unbundling

Align to new escaping used during bundling.
bundle2: refuse empty parameter name

The bundle2 now raise value error when seeing invalid parameter names. The first
introduced rules is: no empty parameter.

The test extension is improve to properly abort when ValueError are encountered.
bundle2: force the first char of parameter to be an letter.

We need a case sensitive character to convey mandatory/advisory parameter
semantic in a later patches.
subrepo: only retrieve the first two components of the Git version

This makes the version detection compatible with Git versions like '1.9-rc0'.
We only cared about the first two components of the version anyway.

--HG--
branch : stable
extra : rebase_source : 8d362f4c81781f3b8d51f41e74775f83a697965b
subrepo: convert matched string to integer before comparing Git version

(1, '4') is greater than (1, 5) so the version check never actually worked.

--HG--
branch : stable
extra : rebase_source : 8b5081a4f515e6295aa51aa63e7eaeaad2b42da7
subrepo: add trailing newlines to warnings

--HG--
branch : stable
extra : rebase_source : 38e1420392ad092d73dab6dc90dba6b6282c5be6
merge with stable