Enforce unique experiment names.

- Change the Experiments.all array into an Experiments.repository dictionary.
- Raise an exception if they key in the repository hash is already in use.
- Add an Experiments[name] lookup for easy access.