Make qualification & segmentation logic pluggable.

:group_for is still available for backwards compatibility.
Add generic subject store so we can store qualifications and segmentations.

Comes with a dummy store, which never stores anything and is compatible with our current behaviour. Also comes with a memory store for testing purposes.
Clean up logging code, make it easier to parse for Splunk.
Keep a list of all defined experiments.
Remove unnecessary extend self
Used typed exception for segmentation problems.
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.
Small tweaks to enforce that experiment names are strings.
DSL changes.
Use assignment object instead of Hash.
Fix README
Add experiment discovery.
Bump version.
Fix Railtie.
Add group class.
Add discovery rake task.
Some API fixes.
Clean up API, and beef up test coverage.
Small performance tweak
Only add experiments to the repository when using define, not when using new.