Refactor Configuration implementation to be more consistent.

Previously, accessing subsets of Configuration objects resulted in
callers receiving Map or Property objects back.  This commit makes it
possible for callers to work with Configuration objects in all
instances.

Additionally, encrypted values in Configuration objects can be handled
within a subclass of Configuration using a fluent API rather than being
handled by an outside class.
Nomenclature pedanticalness:
Generally the method prefix "as" is used for method which return another view into the same, shared data (i.e. iterators/enumerators); whereas "to" is used for methods which return a separate copy of the data in a different format (i.e. toString).

As we're doing the latter, these should probably be prefixed with "to" rather than "as."