Difficulty Settings: Remove unnecessary call to SetChoice()

We are calling SetChoice() inside of the callback function for the
OnChoiceSelected() event.  That means we call SetChoice() when the
player has already selected a choice from the user interface, meaning
the call is entirely redundant.  We can remove that call with no
affect to the game’s behavior.
Save the difficulty setting in the player’s configuration file

When the player changes the difficulty from the options menu we update
the ‘Settings.DIFFICULTY’ global accordingly.  However, we never store
that information in the ‘PlayerConfig’ object, which means we never
save the difficulty setting.  This patch addresses that problem by
first adding a new section of settings to the config file: the
‘Gameplay’ section.  It contains only one value: ‘Difficulty’.
Whenever the user selects a difficulty level we assign the a numeric
difficulty value to that configuration property.

This patch makes the game successful preserve difficulty changes
across instances, e.g. we can restart the game and it uses our
previous difficulty.  However, the options menu still does not show
the current difficulty level.  It always shows ‘Normal’ even when the
configuration file has a different value.
Set the global difficulty value based on the player’s config file

We added support for saving the difficulty level selected by the
player, but we do nothing to load that saved value when we start a new
instance of the game.  This patch changes the Settings module so that
it reads the difficulty from the player’s configuration file instead
of always defaulting to ‘Normal’.  A side-effect of this patch is that
the difficulty list on the options menu shows the correct value
instead of also defaulting to ‘Normal’.
Config: Load values as numbers and booleans where appropriate

Currently we load everything from the player’s configuration file as
if it were a string.  This patch changes the Config:parseLine() method
so that it attempts to determine if a value looks like a number or a
boolean, i.e. the strings ‘true’ and ‘false’ (case-insensitive), and
if so it creates values of those types instead of treating them as
strings.  This conversion is useful since we intend to introduce
boolean configuration flags and do not want them, or anything else, to
have its type screwed up in the conversion process of reading the
configuration file and then re-writing them.
Add a ‘Fullscreen’ option to the player’s configuration file

This patch not only introduces the option but also tells the game to
both read and write it, affecting whether or not the game begins in
fullscreen mode.

This patch also removes tonumber() calls in the Settings module as
they are redundant now that the Config class performs that conversion
when reading the configuration file.