raise a ConflictError when there are conflicting specs loaded

Hi,

I think it would be nice if we start raising exceptions that relate to the type of exception being raised rather than relying on inspecting the exception message to differentiate types of errors.  I've introduced a `ConflictError` that gets raised when conflicting gemspecs are loaded.

## Merits:

* It separates the "message creation" logic from the logic that raises the exception
* You can differentiate a ConflictError from just a normal `LoadError`

The ConflictError inherits from LoadError, so it should be backwards compatible with `rescue` blocks.  If this type of change is acceptable, I'll look at the other exceptions too.