Improved field naming scheme for the Lucene index.

- added convenience methods for constructing bookkeeping field names for
complex fields
- added better Lucene field naming scheme, requires re-indexing (default
is still the old version) (see ComplexFieldUtil for details)
- did some prep work for eventually having the main property of a
complex field be named like the other properties (now it's a nameless
property in the index, while in queries it's usually called "word")
- made sure alternatives of the main property don't also store
character offsets as this wastes space
- made IndexStructure detect the naming scheme used in the index