parse-options: detect attempt to add a duplicate short option name

It is easy to overlook an already assigned single-letter option name
and try to use it for a new one.  Help the developer to catch it
before such a mistake escapes the lab.

This retroactively forbids any short option name (which is defined
to be of type "int") outside the ASCII printable range.  We might
want to do one of two things:

 - tighten the type of short_name member to 'char', and further
   update optbug() to protect it against doing "'%c'" on a funny
   value, e.g. negative or above 127.

 - drop the check (even the "duplicate" check) for an option whose
   short_name is either negative or above 255, to allow clever folks
   to take advantage of the fact that such a short_name cannot be
   parsed from the command line and the member can be used to store
   some extra information.

Helped-by: René Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Merge branch 'rs/more-uses-of-skip-prefix' into jch

* rs/more-uses-of-skip-prefix:
  pack-write: simplify index_pack_lockfile using skip_prefix() and xstrfmt()
  connect: simplify check_ref() using skip_prefix() and starts_with()
Merge branch 'rs/merge-tree-simplify' into jch

* rs/merge-tree-simplify:
  merge-tree: remove unused df_conflict arguments
Merge branch 'rs/simplify-config-include' into jch

* rs/simplify-config-include:
  config: simplify git_config_include()
Merge branch 'rs/simplify-http-walker' into jch

* rs/simplify-http-walker:
  http-walker: simplify process_alternates_response() using strbuf
Merge branch 'tb/crlf-tests' into jch

* tb/crlf-tests:
  MinGW: update tests to handle a native eol of crlf
  Makefile: propagate NATIVE_CRLF to C
  t0027: Tests for core.eol=native, eol=lf, eol=crlf

# Conflicts:
# 	t/test-lib.sh
Merge branch 'tb/complete-diff-ignore-blank-lines' into jch

* tb/complete-diff-ignore-blank-lines:
  completion: Add --ignore-blank-lines for diff
Merge branch 'as/calloc-takes-nmemb-then-size' into jch

* as/calloc-takes-nmemb-then-size:
  calloc() and xcalloc() takes nmemb and then size
Merge branch 'cc/interpret-trailers' into jch

A new filter to programatically edit the tail end of the commit log
messages.

* cc/interpret-trailers:
  Documentation: add documentation for 'git interpret-trailers'
  trailer: add tests for commands in config file
  trailer: execute command from 'trailer.<name>.command'
  trailer: add tests for "git interpret-trailers"
  trailer: add interpret-trailers command
  trailer: put all the processing together and print
  trailer: parse trailers from file or stdin
  trailer: process command line trailer arguments
  trailer: read and process config information
  trailer: process trailers from input message and arguments
  trailer: add data structures and basic functions
Merge branch 'jc/parseopt-verify-short-name' into jch

* jc/parseopt-verify-short-name:
  parse-options: detect attempt to add a duplicate short option name