Fix option argument requirements to avoid segfaults

Many options which required an argument were declared as taking an
optional argument.  The option handling loop, however, did not expect
optional arguments.  For example, passing "--qual-threshold 30" rather
than "--qual-threshold=30" or "-q 30" led to a segfault when atoi() was
passed NULL (optarg).  There were other affected options as well.

This commit correctly declares the required/optional/none status of
option arguments and matches that short-form option spec.

Presumably this was confusion between the entire option being optional
and the option's argument being optional.  The required option checking
is done outside of getopt.
Move short option spec closer to long option spec so they don't drift

This will help keep them in sync when updating options.
Overhaul usage formatting, both in code and when displayed

The usage docs now indicate option arguments and are easier to read.  If
the usage was specifically requested with --help, then it is printed to
stdout instead of stderr.  This is useful for the common idiom of asking
for help and piping to a pager like less or more (without redirecting
stderr).
Optionally use a fixed window size instead of 0.1 of the read length

A fixed window size provides a stricter control on average base
qualities for datasets with a wide range of read lengths.
Merge branch 'option-segfault-and-usage-cleanup'
Add a --drop-n / -N option to drop any sequence containing an N

This is a stricter version of --truncate-n which may use sequence
fragments up until the first N provided they pass the length filter.
Merge branch 'drop-N'
Merge branch 'fixed-window'

Conflicts:
	src/sickle.h
	src/sliding.c
	src/trim_paired.c
	src/trim_single.c
Use a version based on git tags, appended with -mullins, to distinguish our builds