Added support for exclusives declarations.

- Added exclusives fields to selected target types. The specific
  set of supported targets type is the set where we have real use-cases
  in mind. Adding to other target types is trivial.
- Added the CheckExclusives task, which propagates exclusive data,
  and generates error messages if conflicting exclusives are detected.

Note: Up to this change, this should be able to be merged directly into
master without screwing up any existing builds. This does compute divergent
classpaths for incompatible exclusives groups, but the classpaths are currently
not used. A subsequent change will merge the new classpath manipulations into
compilation tasks.

Auditors: benjy