Rename vars in normalize for a bit more sanity before refactoring
Don't use __unicode__ recursively
Reorder if tests and add comment
Rewrite normalize() to work iteratively not recursively

It was very easy to build up extremely deep binary trees
with reduce(operator.or_, ...) which are equivalent to a
tree of depth 1 with large numbers of siblings.

normalize() would choke on doing the simplification when
it was recursive.

unicode still works recursively (and should also be changed
to work iteratively) but it's much harder to generate a genuinely
very deep tree which cannot be simplified, so it's much harder
to run into this issue there.
Merge Timetric changes

Conflicts:
	sunburnt/search.py