[dunecontrol] Fix parsing of Git configuration settings file

dunecontrol fails to properly process Git settings where the value contains
spaces. It was supposed to handle quoting the same way the shell does, but
instead arguments were split at each space and quotes kept verbatim in the
split arguments.

The reason is the order in which the shell performs variable substitution and
tokenizing, preventing the line with the Git configuration entry from being
tokenized by the shell.

This patch fixes the problem by first parsing the line into an array, which is
then in turn expanded again with correct per-element quoting.

In addition, make COMMENT helper variables local while we're at it.
[dunecontrol] Skip unnecessary parsing of Git option lines into array

As Carsten correctly pointed out, it's easier to just eval the command directly.
[dunecontrol] Add some rudimentary protection against user errors during git config parsing

The contents of the files containing git settings is evaluated by the shell, which can
be dangerous if such a file contains a line like 'option value; rm -rf /'. While that is
unlikely, it might happen when people try to create a Git alias.

It would be possible to completely protect users from this problem by parsing the line
completely manually (without involving the shell), but on the other hand, being able to
use shell features for determining option values seems like a good thing to have as well.

This patch adds some rudimentary protection that protects against errors like the one shown
above. More advanced users can still wreak havoc by abusing shell substitution
('option $(echo value; rm -rf /)' comes to mind), but that's not something our average user
will do.

The protection works by splitting the input line into an array first; doing so does not
actually execute the line and so prevents anything outside of value substitutions in $()
from being executed.

Also added a comment to explain why we need to go through the extra step with the array.
Use variadic templates for PushBackTuple and PushFrontTuple, if available

The two classes PushBackTuple and PushFrontTuple are both implemented
using a long list of template specializations.  This makes for a lot
of code, and it also limits the maximum tuple size that can be used.
Using variadic templates (FYI: available since gcc-4.3) instead
allows a generic implementation in only a few lines of code, and
only the compiler being the upper limit on tuple size.

An implementation using variadic templates has already been given
in the documentation of PushBackTuple/PushFrontTuple.  This patch
starts to actually use that implementation, provided that
HAVE_VARIADIC_TEMPLATES is set.  Otherwise the old implementation
is used.
spelling
Properly implement check in method 'touch'

A previous commit introduced a check whether the element to-be-touched
is actually contained in the container.  That patch caused the test
to fail.  The new patch fixes this.
Check for std::conditional and pull it into the Dune namespace

If not found, our own fallback implementation will be used.
Merge branch 'master' into FS1288

This fixes the parsing of git config options.
Be aware that you can use shell code in these options!
Thanks to Steffen Müthig for this fix!
Fixes BUILDDIR variable treatment in opts file.
Merge remote-tracking branch 'origin/master' into p/gersbach/FS1336-tuples-variadic-templates

Conflicts:
	dune/common/tupleutility.hh