Changed LabelSubstitutionFF so that there are multiple versions, with eigher basic
or sparse LabelSubstitutionFeatures.

Basic label substitution features consist
of the basic MATCH and NONMATCH features as well as LabelX substitutes LabelY
features. The sparse feature that is added for the sparse version consists of
a rule identityt, as given by the rule nonterminal labels andl left-hand-side
in combination with the property inverted/monotone in combination with the
list of substituting labels. This sparse feature is indeed very sparse,
something like Num_Terminals^5 instantiations exist of it, e.g. about 900
of these are observed for Simple HAT features (5 nonterminal types).
This can lead to extreme overfitting, a reason no to want to use this
sparse feature set by default. Alternate feature names can now be used
to get :
1. The standard substitution feature only basic
2. The standard substitution feature basic + sparse
3. The double label substitution feature (with label smoothing) basic
4. The double label substitution feature (with label smoothing) basic + sparse

The Decoder is adapted to recognize the names of each of these features.
The names are changed to their uppercased forms, but the decoder will accept
either lowercased or uppercased form, basically ignoring the casing when
matching the feature name for these features.
The label substitution and feature function test are also adopted
to take over these changed names etc.

       modified:   src/joshua/decoder/Decoder.java
       modified:   src/joshua/decoder/ff/LabelSubstitutionFF.java
       modified:   test/joshua/decoder/FeatureFunctionsTest.java
       modified:   test/joshua/decoder/SoftSyntacticConstraintDecodingTest.java