Modifications in Hifst to support other semirings than Lexicographic<Tropical, Tropical>, and refactoring
for improved support of KenLM

- Various changes required to compile, mostly changing templates
- A new class to handle the weights transparently regardless of the semiring.
  For further expansion to more semiring variants, this class will require template specialization.
- Note: the true caser does not support the sparse semiring option.
- Also added GenericArcMapper in fsttools, so that the arc can be modified by means of a user functor and
  openfst Map.
- Various uint => unsigned.
- Other cleanups.
- Merged unit tests for weight into one single file, and added a few tests.
  == This bit will need some cleanup further on.
- Add regression test -- checks hifst translation and alignment, hipdt translation
- Refactor code to allow the unification of the usage of KenLM templates across various tools.
  This benefits alilats2splats, and hifst. applyLm can also be simplified.
- new MainClass, a class that runs petty but useful stuff done by most tools: config initialization,
  config info, etc. The idea is that eventually all tools will use this class in the main function.

- [Untested] support for NPLM models through KenLM.
Fix bugs with sparse tuple weights  in printstrings.
New tool rules2weights

- This tool maps tropical sparse tuple weight translation lattices
  directly into vector weight lattices.
- Add regression test
- Also, take out a std::endl in printstrings
Various changes

- printstrings now supports dotproduct. Fix regression tests.
- applylm code tightened and sharing single kenlm format selection code, and other refactorings.
- new option in hifst to support rm/det/min of the final translation lattices.
- new option in hifst to support internally rules-to-features, i.e. hifst can do internally
  the same as rules2weights as a postprocessing step.
- Add regression test showing hifst with rules2weights processing step.
- Fix bug in hifst multithreaded -- fake tropical sparse tuple feature weights were not initialized.
- Modifications to .gitignore
delete a few unnecessary messages
Fix unit tests

Fixed unit test compilation issues, and commented out
an empty/set-to-fail  unit test -- marked as todo.