Adjusting behavior

The processes has been updated somewhat in light of @lutter's feedback.  Following is an overview:

   1. Node boots against /svc/boot with its hardware details (mac etc).  One of the following happens:
      a. If one node is found, the node is positively identified and the node boots according the policy.  If that means booting the MK, the ID of the node is supplied in the boot params so that the first checkin will be directly against the appropriate node.  The process is unchanged for this node from here.
      b. If no node is found, a new node is created with the hw_info supplied and the boot event is logged against the new node.  The MK is booted WITHOUT the ID supplied in the boot params.  The first checkin will need to perform an 'enriched' lookup which will include facts.

   2. The node boots without an ID.  The first checkin will not supply an ID and a lookup will be done.  This time, any facts that match regexes supplied in the 'match_nodes_on_facts' config option will be used in the match against hw_info.  One of the following happens:
      a. One node is found.  It should have no facts in it hw_info.  This should be the node that was created in /svc/boot.  It is determined that this is a new machines and the new node will be its node in the DB.  If 'match_nodes_on_facts' are configured, any of the nodes facts that match any of the regexes will be added as items in the hw_info with the fact name prefixed with 'fact_'.
      b. Two nodes are found.  One will have facts in its hw_info that triggered its match and the other will be the node created for it during /svc/boot, have no facts and will have matched on the details supplied in /svc/boot.  This will happen if a mainboard with integrated NICs has been replaced.  The correct node is the one with the facts.  The log entries from the new node are appended to the correct node, the new node is deleted and the hw_info (MAC, UUID etc) is updated on the correct node so that is properly ID'ed on subsequent boots.
      c. More than 2 nodes are found or 2 nodes are found where neither or both have facts.  This is an error and DuplicateNodeError will be raised.

Facts in HW_INFO
Facts can now be added into hw_info.  The facts that go in a are nominated by supplying regexes to the 'match_nodes_on_facts' config option.  When they are added to the hw_info, they are prefixed with 'fact_'.  The lookup and checkin node functions will maintain these.