3 bug fixes

I got sometimes a crash but couldn't say when exactly. The backtrace was:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/hamster/overview.py", line 472, in on_facts_changed
    self.find_facts()
  File "/usr/lib/python2.7/dist-packages/hamster/overview.py", line 451, in find_facts
    self.fact_tree.set_facts(self.facts)
  File "/usr/lib/python2.7/dist-packages/hamster/widgets/facttree.py", line 389, in set_facts
    self.set_row_heights()
  File "/usr/lib/python2.7/dist-packages/hamster/widgets/facttree.py", line 445, in set_row_heights
    self.vadjustment.set_lower(0)
AttributeError: 'NoneType' object has no attribute 'set_lower'

After fixing this I got this one instead:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/hamster/overview.py", line 472, in on_facts_changed
    self.find_facts()
  File "/usr/lib/python2.7/dist-packages/hamster/overview.py", line 451, in find_facts
    self.fact_tree.set_facts(self.facts)
  File "/usr/lib/python2.7/dist-packages/hamster/widgets/facttree.py", line 395, in set_facts
    self.set_current_fact(fact_ids.index(current_fact.id))
  File "/usr/lib/python2.7/dist-packages/hamster/widgets/facttree.py", line 308, in set_current_fact
    self.on_scroll()
  File "/usr/lib/python2.7/dist-packages/hamster/widgets/facttree.py", line 471, in on_scroll
    y_pos = max(0, min(self.vadjustment.get_upper() - self.height, y_pos))
AttributeError: 'NoneType' object has no attribute 'get_upper'

I don't know the deeper cause for this so there might be a better solution than mine.

I got also a crash in Overview when looking in my locale (German) the months March (März) and January (Jänner). The backtrace is:
Traceback (most recent call last):
  File "/usr/lib/python2.7/dist-packages/hamster/overview.py", line 106, in on_time_forth_click
    self.range_pick.next_range()
  File "/usr/lib/python2.7/dist-packages/hamster/widgets/dates.py", line 133, in next_range
    self.emit_range(self.current_range, start, end)
  File "/usr/lib/python2.7/dist-packages/hamster/widgets/dates.py", line 92, in emit_range
    self.set_range(start, end)
  File "/usr/lib/python2.7/dist-packages/hamster/widgets/dates.py", line 86, in set_range
    self.label.set_markup('<b>%s</b>' % stuff.format_range(start_date, end_date).encode("utf-8"))
  File "/usr/lib/python2.7/dist-packages/hamster/lib/stuff.py", line 97, in format_range
    title = (u"%(start_B)s %(start_d)s – %(end_d)s, %(end_Y)s") % dates_dict
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)

And the description of facts was wrong when it had an & in it. It would show a completely different description from some other fact.