Create SCIFIOConfig framework

The SCIFIOConfig class is intended to be a method-call scoped bag of
context (specifically, configuration options). By putting all
configuration options in this class and passing down from one method to
another, configurable classes can take what information they need and
behave appropriately. This allows exposing of low-level configuration
even in high-level API simply by adding method signatures that accept a
SCIFIOConfig.
Refactor to use SCIFIOConfig

Overhauled the SCIFIO API to make use of the SCIFIOConfig class.
For all the components with SCIFIOConfig methods, the following actions
were performed:

* Remove class fields and data structures pertaining to the state now
  encapsulated by a SCIFIOConfig.
* Add relevant method signatures accepting a SCIFIOConfig and update all
  method chains so that all execution pathways end in the SCIFIOConfig
  method.
* Update consumption of the old API to use the SCIFIOConfig-based
  methods whenever possible to create execution pathways from top
  to bottom that allow passing of SCIFIOConfigs.