improve match algorithm

the new algorithm is in order to calculate a match distance,
so the result compare can immediately return,
and the struct size is also decrease,
which improve the sort speed when memcopy result.

in new algorithm, each char has a base score,
which decrease as the index increase.
so match char at front get a higher score.
and the distance is total base score minus got score.
basicly, the long the word is, the higher the total score is.
so for a match, the short word has a near distance than long word.

but adding to the basic rules,
there are some special cases which can get more score.
to short the distance of word.
even the word is long.

first, the continuous matches have a increase factor,
to make it get more score.

second, match the word boundary char,
can get all subwords scores, multiply a const factor.

* remove the use of LetterNode, dramatically decrease the memory size
* (for me, it drops from 1.6G to 50M)

modify LetterNode to map letter to a lower array,remove unuse index
fix complete error when the line has multi-bytes utf-8 chars