Added support to FastVectorHighlighter for externally stored text

FastVectorHighlighter assumes that the text for all fields is stored in
the index, and therefore can't be used in scenarios where the text is
stored externally. Introduced an abstraction called
IFragmentSourceProvider which is intended to overcome this limitation.
The StoredFieldFragmentSourceProvider is a default implementation of
this interface that essentially duplicates the original code from
BaseFragmentsBuilder related to retrieving source text.

Also, introduced some public read-only properties to provide access to
the internal state of FieldFragList and FieldPhraseList classes. This
was necessary in order for overrides of virtual methods defined on
BaseFragmentsHighlighter to be able to do anything useful.