Added a check_exclusives task.

- This change converts the exclusives propagation into a build phase.
- Conflicting exclusives are detected by the CheckExclusives task,
  and cause the build to fail.
- Scala compilation generates a warning if the scala targets to be compiled
  have incompatible exclusive tags.
- The propagation code has been modified to avoid recomputing things.
- Exclusives tags have been added to all of the target types.
- A test was added to verify that the CheckExclusives task correctly
  detects errors.
- Documentation was updated and extended.

Reviewers note: Adding the "exclusives" tag to all of the target types seems
very ugly, but I wasn't able to find any other way of making it an option
on all of the targets. Is there some python/pants idiom that would make that
cleaner?

Auditors: benjy