Open File Fix

ConfigFile's constructor no longer throws when it cannot open the configuration file.  This means that attempting to create a ConfigFile ontop of a file that does not exist will simply create an empty collection of configurations.
ConfiguratiorProvider Iterability

Moved the concrete collection into the ConfigurationProvider base class, which means that classes that implement a particular kind of provider no longer have to implement the collection and Get method.

Added ConfigurationProviderIterator which allows every key/value pair in a ConfigurationProvider to be iterated over.
ConfigurationProvider Fix

Fixed a bug wherein it was possible for Get overloads on ConfigurationProvider to throw NullPointerException.
Configuration File Write Back

ConfigFile objects may now be created by reading from a file, and written back to the same file.

Any ConfigurationProvider may be written to any file using the Write static method of the ConfigFileWriter class.

The ConfigurationParser interface has been extended to support serialization in addition to parsing.

INIParser now serializes and parses configuration in INI format.
Set Configurations

In addition to being retrieved, configurations may not be set.  This allows a ConfigFile to be created/read, modified in some way, and then written back.  Which allows -- among other things -- for the creation of a default configuration file, or dynamic addition -- through the software itself -- of configurations to the file for the next time the software is started.