Checks to see if two cmddicts are the same.
  Two cmddicts are defined to be the same if they have the same callbacks/
  helptexts/children/summaries for all nodes.

def are_cmddicts_same(dict1, dict2):
  """ 
  Checks to see if two cmddicts are the same.
  Two cmddicts are defined to be the same if they have the same callbacks/
  helptexts/children/summaries for all nodes. 
  """
  
  # If the set of all keys are not the same, they must not be the same.
  if set(dict1.keys()) != set(dict2.keys()):
    return False
  
  # Everything in dict1 should be in dict2
  for key in dict1:
    # Check everything except children;  Check for children recursively
    for propertytype in dict1[key]:
      if (not propertytype in dict2[key] or
          dict1[key][propertytype] != dict2[key][propertytype]):
        return False
      
    # Check children
    if not are_cmddicts_same(dict1[key]['children'], dict2[key]['children']):
      return False
      
  return True