Added support for multiple LMs and TMs; Separated the feature handlig and language model integration and separated PT rules from Hypotheses

Feature handling and LM integration are now handled by respective
managers. Multiple LMs and TMs are supported now (though with some
restrictions). Separated the PT rules from the Hypotheses objects by
creating a RuleItem class.
ToDo: 1. Remove the explicit computation of featVec during decoding and
compute them while printing N-best list
2. Currently it only supports multiple LMs with *same* order. Need to
move ConsequentItem and address the string eliding/ LM state issues for
truly supporting multiple LMs