Allow string fields to store term counts.

To use you set term_count_destination on the string field mapper to the
relative path of a field to which you'd like to write the term count.  That
field doesn't have to be mapped.  The mapping will be automatically added
and default to the usual long numeric stuff.

You can facet, search, and return the term count.  It does not come back
in the source because, well, it isn't part of the source.

The way in which this is calculated is either slick or hacky depending on
your perspective.  We use the fact that lucene analyzes Fields in the order
on which they occur on the document and we add the term count destination
field to the document right after the field we are analyzing.  We then add
a term filter that just counts the terms and writes the count to the new
field just in time for lucene to pick it up as the next field.  Because of
the way the infrastructure works, there is nothing linking the field being
counted and the term count field other than its position in the document.
This sounds scary but, according to my tests, works just fine if you are
careful to manage thread local state.

Closes #3920