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.
Addressed Rory's comments.

-- rule level word alignment built when the rule is built
-- alignment info not passed through feature computation
-- reorganization of writable classes + use of readVInt writeVInt
Addressed more comments for adding word alignment to rules.

-- added some TODOs to indicate that rules may be better built
on the fly during extraction (plus added issue on github)
-- added a unit test for extraction
-- added a commented example code on how to print word alignments
for rules in retrieval.
-- timing experiments for the full WMT13 RU-EN set:
            without alignment | with alignment
extraction  96m               | 106m
s2t         12m               | 12m
t2s         14m               | 13m
merge       28m               | 41m
retrieval   10m45s            | 11m11s
deleted commented code.

deleted commented code showing how to print out word
alignment for rules. will add local feature instead
demonstrating how to use alignment info.
Merge pull request #12 from ucam-smt/rulextract-alignment

Added word alignment information for extracted rules.