Restructured flag binding

Heavily restructured how flags and names are bound to options, and how
the help is printed.
Changed switch options to negate the initial value when set. Note that
it does not turn on and off every time it is used, so multiple
occurrences will only result in not-initial-value.
Updated the makefile.