def dscl(attribs, dir_info)
      check_critical_attribute( attribs, :record_name )
      check_critical_attribute( attribs, :action )
      check_critical_attribute( attribs, :scope )
      tidy_attribs = tidy_attribs(attribs)
      build_dscl_command( tidy_attribs, dir_info )
    end
def dscl(attribs, dir_info)
      check_critical_attribute( attribs, :record_name )
      check_critical_attribute( attribs, :action )
      check_critical_attribute( attribs, :scope )
      tidy_attribs = tidy_attribs(attribs)
      build_dscl_command( tidy_attribs, dir_info )
    end
builds the dscl command (after checking parameters)
 @attribs [Hash] - required - :record_name (the resource to affect), :action (create, append, delete, passwd, etc), attribute: (resource attribute to change), value: (value to add to attribute)
 @dir_info [Hash] - usually configured in the connection initializer and then passed to dscl to build command correctly