Improve snippet weights

This implements a snippet weighing mechanism where duplicate matches to
the same query term are worth less then matches to distinct query terms.
It makes it the default for the Elasticsearch plugin.

It also fixes a nasty issue with multi fields and the when analyzing to
get the hit source.

Change-Id: I5998b15c4add0d785aa5d052c5e6fc005f498e03