build: switch configure to argparse

The optparse module is deprecated and possibly unmaintained. Switch to
argparse.
build: order configure switches alphabetically

Put switches in alphabetical order but keep --prefix at the top because
that's arguably the one people will be looking for most.
build: fix up style issues in configure script

* Use single quotes consistently.
* Remove a few stray semicolons.
* Fix up some overly long lines.
* Line up a few expressions.
build: use advanced argparse options in configure

* Set up defaults for configure switches that have, well, defaults.
* Set up choices for configure switches that are multiple choice.
build: improve ninja build, don't run configure

* The way the ninja build was configured triggered a lot of unnecessary
  rebuilds due to unconditionally touching out/Makefile. Said file is
  not used by ninja anyway so rewrite the rules to factor it out.

* The misfeature of running ./configure when the configure script has
  been touched has been removed - it destroys the existing configuration
  at the most inopportune times. Instead, print an error message telling
  the user to (re-)run ./configure.

* Speed up null builds by not invoking `ninja` when there is nothing to
  do.

* Remove cruft from the Makefile. Eliminate a few .PHONY targets, etc.
build: make ninja build respect V=

Compiling with `make V=1` (which is the default, actually) now runs
ninja in verbose mode. To disable, run `make V=`.
configure: lowercase configure switch descriptions

Purely an aesthetic change but the help messages are a little more
distinct from the switch argument(s) now.