git: fix interaction between detached HEADs and only_local

When using local-only access and detached HEADs, the remote commit
was not properly resolved in #update, which would lead to an invalid
call to merge-base.
importers: streamline subprocess calling

This commit modifies all calls to Subprocess.run to get rid of Dir.chdir
as much as possible (with the longer term target to parallelize import),
as well as using Package#run instead of Subprocess.run directly. It finally
removes most calls to the backtick operator to call the autobuild run facilities
instead, ensuring proper quoting and error reporting
importers: make the retry behaviour a per-exception attribute

We basically only want to retry if the importer has hit the network.
In all other cases, the error is really final.
rework the windows handling code in Subprocess.run

The new code is a lot simpler, and also fixes a missing cleanup on
exception bug: if an exception was raised between the two chdirs, the
process would stay in the package's directory
svn: fix checkout
document Subcommand.run
git: reset --hard must be run with a working copy
Merge pull request #11 from rock-core/importer_subprocess_cleanup

Importer subprocess cleanup
more fine-grained modularized parallel make support and rake integration

This is meant to allow parallelizing make-based builds that are
"hidden" under rake. The only things that one would need to do
is override invoke_rake to tune rake_setup_task using the parallel
build commands given to it, e.g. assuming that the 'build' task
accepts the make arguments,

    def pkg.invoke_rake
	Autobuild.invoke_make_parallel do |*options|
	    self.rake_setup_task = "build[#{options.join(" ")}]"
	    super
	end
    end
cmake: normalize definitions in CMake#define
give control to enable/disable utilities freely

This commit is meant to give the means to autoproj to enable/disable
utilities (here, tests) on a package-by-package basis. This requires
to split the availability of utilities (whether tests are present at
all) with the control over enabling/disabling them.

It then adds an option to declare whether an utility should be
enabled by default or not, and disables tests by default
define Autobuild.each_utility

This is to avoid accessing Autobuild.utilities directly when one
needs to enumerate the registered utilities.