Added word alignment information for extracted rules.

In the extraction phase, word alignment info is written
to an output value together with provenance counts.
The word alignment is kept until the merge phase and written
to the HFiles. For extraction, feature computation and merging,
the alignment info is always kept as a MapReduce value rather than
key to preserve the structure of RuleWritable (3 fields: lhs, src and trg).
All alignments and counts are in the HFile. At retrieval time, any local
feature that takes into account these alignments can be computed.
For example, it's possible to keep the most frequent alignment or
all of them with their frequency.
Why have you refactored this? Why did it need to be changed?