Arguments create a context from external input, which is assumed to be a string as though it came from a URL element.

'title' => title
    'description' => Description
    'keyword' => Default keyword for the context
    'context' => Callback to create the context. Params: $arg = NULL, $conf = NULL, $empty = FALSE
    'default' => either an array of default settings or a string which is a callback or null to not use.
    'settings form' => params: $form, $form_state, $conf -- gets the whole form. Should put anything it wants to keep automatically in $form['settings']
    'settings form validate' => params: $form, $form_state
    'settings form submit' => params: $form, $form_state
    'criteria form' => params: $form, &$form_state, $conf, $argument, $id -- gets the whole argument. It should only put form widgets in $form[$id]. $conf may not be properly initialized so always guard against this due to arguments being changed and handlers not being updated to match.
    + submit + validate
    'criteria select' => returns true if the selected criteria matches the context. params: $context, $conf