Reads the program's arguments into a struct. Each field of T is an option: a bool is a switch that is set by its name
alone, anything else takes the next argument as its value (-count 3), and a fixed-size array takes one argument per
element. Returns whether it worked, the filled struct, an Is_Set of which options appeared, and the arguments that were
not options. An unknown option, a missing or bad value or a repeated option makes it fail. Asking for -help prints the
options and fails.
For a struct T, a struct with a bool for each of its fields that parse_arguments sets to true for every option the
user gave. It tells an option left at its default apart from one set to the same value.