Up Monitor was crashing if no hosts were defined.

Add a default empty list to use if no hosts are defined.
Add new unittests to try and track down rule fire failures.

I'm having cases were some complex rules appear to not be firing in productin.
To track it down, I revised rule logging to include the names of the rules
being fired.

I also added a number of unittests to try and demonstrate various errors I
thought might be the cause. The tests aren't showing any problems, but they
seem worth preserving.