Gideon : Added a new feature function LabelSubstitutionFF.java
which is to be used in combination with soft-syntactic decoding.
The feature function fires boolean features for:

1. The match/mismatch of the rule label with the substituted label
2. A particular subsitution of a substituted label for a certain rule label

Adapted the tests FeatureFunctionTest to test if this feature is firing and
SoftSyntacticConstraintDecodingTest to test if this feature yields different
feature activations if soft syntactic constraint decoding is used as compared
to when normal decoding is used.

Added new ckass src/joshua/decoder/ff/RulePropertiesQuerying.java
to put shared static method used by different feature funtions in a central place.

       modified:   src/joshua/decoder/Decoder.java
       modified:   src/joshua/decoder/ff/LabelCombinationFF.java
       new file:   src/joshua/decoder/ff/LabelSubstitutionFF.java
       new file:   src/joshua/decoder/ff/RulePropertiesQuerying.java
       modified:   test/joshua/decoder/FeatureFunctionsTest.java
       modified:   test/joshua/decoder/SoftSyntacticConstraintDecodingTest.java
Gideon : Removed assertion in
 src/joshua/decoder/ff/LabelSubstitutionFF.java
that leads to problems when calling the decoder without including JUnit in the library path.
Gideon : Removed superfluous log output "substitution X for Y" from
src/joshua/decoder/chart_parser/NonterminalMatcherFactory.java
Gideon : Implemented a new type of labelsubstitutionfeature
for the combination of a rule - as identified by its labels and whether its gaps are monotone
or inverted (rules with only one gap are considered monotone)
and the substituted labels for those gaps.
This is a more sparse, more specific variant of the basic label substitution feature,
which fires for every susbsitution of one used label for one rule (gap) label.

We added ListUtil.java to store the frequently used stringList methods -
which basically produce different types of Strings from lists of Strings or other objects.

	modified:   src/joshua/decoder/ff/LabelSubstitutionFF.java
	new file:   src/joshua/util/ListUtil.java
Gideon : Adapted the tests and supporting code in SoftSyntacticConstraintDecodingTest.java,
ArtificialGrammarAndCorpusCreater.java and TestConfigFileCreater.java
to produce a grammar variant that also contains an inverted rule for one of the tests, in order
to be able to see that the new feature in LabelSubstitutionFF corresponding to
the combination of the Rule information (Labels + Inverted/Monotone) and Label substitution information
indeed also gives the correct Inverted part for inverted rules.
This is now checked by a new simple test in  test/joshua/decoder/SoftSyntacticConstraintDecodingTest.java that
checks that the "label substitution features with inversion" are fired as expected.