client/textanalysis rewrite
client/textanalysis rewrite

I considered breaking this into multiple parts but it is too much work
and not worth it at this point.

Logically there are two parts: a bunch of support functions, most of
them are generic (list_* and obj_*, subsets) plus a few special
functions:

tokens_to_graph_elements and groups_to_thirds

"thirds" is a list of objects representing either a node or a link with start,
end and token. The token is the node/link name, the start and end are
used to later lookup the node based on cursor position (for type
changing from the command line).

groups is just an intermediate step where each individual token (space
separates them, except when in quotes) is still a separate entry in the
list.

The logic of textanalysis remains:
- prefix (text before the first node) means the first link is the
  complete sentence
- starCase ramains (creating a single center node of the complete
  sentence and linking everything to it with the 'chained' link name)
- and logic is updated to include multiple and sequences (the simple
  case remains for a single stretch of ands).

Simplifications of the code:
- single place calls for __addNode and __addLink
- no more orderStack, instead we have a thirds array of node,link pairs
  flattened to a single list, each with start/end in the sentence (this
  takes into account the hash mark).

Rhizi/rhizi,tlevine/rhizi,ozFri/rhizi,shlomif/rhizi,tlevine/rhizi,Rhizi/rhizi,Rhizi/rhizi,tlevine/rhizi,yuvadm/rhizi,Rhizi/rhizi,yuvadm/rhizi,ozFri/rhizi,cben/rhizi,cben/rhizi,shlomif/rhizi,cben/rhizi,cben/rhizi,yuvadm/rhizi,shlomif/rhizi,shlomif/rhizi,ozFri/rhizi,ozFri/rhizi,yuvadm/rhizi,tlevine/rhizi