Don't try to open null URLs.
Fixed issue where update cache entires could be cleared if they were not found in the current update.
Added support for showing HTML messages during the update.

<message id="optional-message-id" version="1">
  <phase>initialize</phase>
  <agreement>true</agreement>
  <title>Question</title>
  <type>html</type>
  <content><![CDATA[
    You are <strong>really cool</strong>, yes?
  ]]></content>
</message>

Messages can be versioned -- they only show once (except in the case of failed or cancelled updates -- they may show until a successful update). Dialogs can either be "agreement" (I agree / Cancel) or mere informational dialogs.

URLs can be used instead of embedded HTML if <type>url</type> is used and <content></content> points to a URL.

Available phases:
* initialize
* pre-download
* post-download
* pre-install
* post-install
* finalize