Fixup Scm and its test.

Support environments like travis-ci with no proper user config:
  setup a repo identity in test
Fixup _get_remote implementation (kill quoting) and test.
Spread testing to python 2.7 and java 6.
Use a multiline string for the script.
Cleanup custom node naming scheme facility to just concentrate on names.
Be resilent to lack of a configured SCM.
Merge pull request #139 from jsirois/jsirois/fix_scm_tests

Fixup Scm and its test.
Merge remote-tracking branch 'twitter/master'
Starting to add support for exclusive tags.

This is pushed as a sanity-check code-review. It's not complete
enough to really be useful, but the core functionality is together
enough to get someone else to take a look, and make sure it's
a good idea. I don't plan to merge this into master until it's
feature-complete.

This change adds a new attribute to build targets,
called "exclusives". The exclusives is a dictionary
mapping from exclusive keys to version specifier strings.

The idea is that if code depends on a specific version of
some component, then it can declare that by adding an exclusives
entry.

At build time, any target whose transitive dependency graph contains
more than one value for any exclusive tag will generate an error.

Exclusives will also be used for compilation partitioning: the
source files associated with two targets can only be part of the
same compilation partition if they contain no conflicting exclusives.

This change adds basic support for exclusives. Exclusives can be
declared for build targets, and the exclusives set for the
transitive dependency graph are computed for each target. For testing
purposes, scala_compile currently generates a warning message if it
detects any scala target with conflicting exclusives it its transitive
dependency graph.

A simple unit test is also provided for the transitive
exclusives propagation.

Auditors: benjy
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
Addressing review comments

- changed to a python idiom for default exclusives arguments.
- pruned redundancy from documentation.
- renamed test file.
- changed parameter handling for creation of tasks from the
  TestCheckExclusives test.
- cleaned up exclusives propagation for InternalTarget.

Still todo before this can merge to master:
- Examine all of the target types, to identify the set which are proxies,
  and make sure that all proxy targets propagate the exclusives correctly.

Auditor: benjy
Extended exclusives propagation.

The first draft of "exclusives" tagging support didn't handle two
corner cases:

(1) Types that weren't subclasses of InternalTarget, but had overridden
    implementations of the _walk method for tracing through dependencies;
(2) JVM based target types that could be transformed into jar dependencies.

This change adds coverage for those cases.

Auditors: benjy
Megamerge!

- Merge the exclusives code with the results of the twitter megamerge.
- Fix a test bug introduced in the merge.

Auditors: benjy
Adding compilation group chunking based on exclusives.
Add compilation chunking based on exclusives.

First step in doing chunkwise compilation of code using
exclusives. This change modifies the compilation process in
Group.py so that targets are divided into chunks based on
the compatibility between the exclusives tags that they declare.
Targets within a compilation chunks are guaranteed to contain only
compatible exclusives declarations. Includes a simple test
of the chunking process.

This does not completely separate all of the compilation dependencies
for exclusives: it's still using a single ivy process to resolve
jar dependencies. Before this code is ready for merging into master,
ivy resolution needs to be modified so that it can correctly resolve
incompatible exclusive target chunks separately.

Reviewers note: git got confused by the combination of changes in my dev branch,
and changes made in master, and created a bunch of spurious merge errors when I rebased.
git diffs pre-push are showing a lot of the changes that you've already reviewed due to
that. So this may look familiar, but there is new material, primarily in group.py.

Auditors: benjy