Update settings code

After discussion with CaptainMurdoch, I re-wrote the precedence ordering
and parsing of arguments.

Before these changes this is how things worked:
* Parse command line arguments
* Read configuration file and set things that weren't already set via
  command line

This caused the need to know whether a value was still the default, or
if it had been set.  This made it such that tri-states were needed (in
an enum) instead of booleans and precedence ordering was strange.

Now:
* Try reading default settings file
* Parse arguments, if "settings file" is given, read it at parse time

This over-writes things as it goes, so it is possible to have settings
in a settings file be over-written by simply putting them later in your
args.  This also allows for multiple configuration files to be read to
set things.

Example of settings file and over-written args:
./fppd --config-file set_paths.cfg -v 95

Example of multiple config files:
./fppd --config-file set_paths.cfg --config-file volume.cfg --verbose