Added a helper function to create a delegate object from a protocol-name/class-name map.

In the spirit of failing early, this function raises an exception when the class of that name does not conform to the specified protocol.
Added a custom exception name for misconfigurations of the delegate.

Because screwing up this setup is an implementation error, and not an expected runtime error, we raise exceptions when the accompanying validations fail.
Because the kinds of possible screw ups don’t really match the semantics of Foundation’s existing exception names, we define our own name.
Added an initializer that sets the specific delegates up.

The actual setup process consists of several steps:
- See if the config file exists, and contains a dictionary.
- Take that dictionary, and validate its contents.
- Take the sanitized dictionary, and apply those settings, while (again) sanitizing what’s being set up.

This commit handles the last two steps, and populates the specific delegates based on the dictionary.
In order to have this testable, these steps happen in a separate initializer.
Since the class is currently implemented as a singleton, this initializer is not pubic, though!

Because the main reason for a singleton was ease of access to the One True Delegate© for the purpose of setting all the specific delegates, this implementation detail can now be removed in a later commit, and this new initializer can be published as the designated one.

The next commit will handle the remaining initial step of the setup, in the implementation of -init.
Added an empty config file to the sample app, and accompanying lookup code to the JSDecoupledAppDelegate.

The standard initializer is now searching for the config file, and passes the contained configuration dictionary to the (private) designated initializer.
Moved the setup of the state delegate sample into the config file.

This commit concludes the changes to the setup of the specific delegates, by providing a concrete example of how to do it.

Possible next steps:
- JSDecoupledAppDelegate no longer needs to be a singleton, as all its setup happens in one place. So that part of its implementation can die.
- Currently, there’s some hence and forth between strings and protocols. Since protocols are objects themselves, some of that is redundant.
- JSDecoupledAppDelegate has concrete implementations for all methods in the UIApplicationDelegate. This can be avoided by using real method forwarding to the specific delegates via `forwardingTargetForSelector:`.