Rebased Ngram

break line (this loop seems strange). I think the issue here is that `value_splitter` is not just splitting the value, but also adding it to the document.

What we can notice is that the only thing that this method does is to return `terms` constructed from a `value`.

Thus, one options is to define this operation separately:

```
@staticmethod
def edge_ngram_terms(value):
    """...
    """
    ...
         yield _to_xapian_term(item[start:end])
```

and re-write `add_edge_ngram_to_document`.

```
def add_edge_ngram_to_document(prefix, value, weight):
    for term in edge_ngram_terms(value):
        document.add_term(term, weight)
        document.add_term(prefix + term, weight)
```

What do you think?

Apart from this, all the rest is very good: variable names, constants, loop, docstrings. :)