* Newick format with extensions

The Newick format is documented here: 
	http://evolution.genetics.washington.edu/phylip/newick_doc.html

Gene and species trees are saved in Newick format with some additional
tags defined. 

Our extensions come in comments of the from "[&&PRIME <options>]". The
<options> part follows this grammar:
	 <options>   ::= <option> | <option> <separator> <options>
	 <option>    ::= <tag> '=' <value>
	 <separator> ::= [ ,:]+
	 <tag>       ::= [a-zA_Z]+
	 <value>     ::= <string> | <number> | <numlist>

Strings are given with quotations. For example an option could be
	    Species = 'human'.

Labels are ignored *unless* they are integers, in which case they are
taken as node identifiers. This requires them to be unique.

Here are the tags that we define.

     Tag  Argument	Description
     S    <string>      Species annotation.
     AC	  <int_list>    Anti-chains on edge. Anti chains are numbered
			by their species node, and if anti-chains X, Y
			and Z are on a gene tree edge, the markup will
			contain for example 'AC=(7, 8,9)'. 
	
     ID	  <int>		The node identifier. This cannot be
			arbitrarily set. Ideally, it should be as
			output by a tree generator
			application. However, as long as the ids are
			node unique, and in the interval 0 to #nodes,
			then you should be fine. Notice that it does
			not work to set the ID for just some of the
			nodes. It is either all or no nodes being ID:d.
			

     NT   <float>	This is a time associated with a node,
			typically time elapsed since the root
			bifurcation. Notice that it is *not* the time
			over the edge to parent.

     TT   <float>       "Top time": the time for the root edge. Only 
			present if NT is used, not ET.

     BT   <float>       Branch time, the time that has passed from parent
                        to current node. The sum of branch times from
                        root to current node should sum to the node time.

     BL   <float>       Branch length. This tag should not be used, but
			is reserved for implementation reasons. The
			branch length, given as for example as
			"<leafname>:<branchlength>", or
			"(...):<branchlength>" are stored internally
			in PRIME using this tag.

     HY   <int>         Values: 0 = Not a hybrid node, 1 = hybrid, 2 = extinct.
                        Explanations of these classifications have to be found
	 		elsewhere.


Here is an example of a tree with the new markup:

	((hum1[&&PRIME:S=Human ID=0], fly1[&&PRIME ID=1 S=Fly])[&&PRIME ID=2], 
	 (hum2[&&PRIME S=Human ID=3], fly2[&&PRIME ID =4, S=Fly])[&&PRIME ID=5])[&&PRIME ID=6]

The code only supports binary trees. This is because our methods were
designed for fully resolved rooted trees. However, we have also
implemented reading of trees with node degrees higher than
one. Binary nodes are handled in the natural way, but nodes with
higher degrees are resolved in an arbitrary way. The new edges get
branchlengths set to 0.

* NHX - Extended New Hampshire format

In our first attempts, NHX was used. However, since the main NHX user,
ATV, does not recognize or at least ignore extensions, we are leaving
this format. We want to gracefully handle the NHX markup though.

For a specification of NHX, please see 
    http://www.genetics.wustl.edu/eddy/forester/NHX.html
