A Value object is a 
Foswiki::Configure::Item that represents a single entry
in a configuration spec i.e. it is the leaf type in a configuration
model.
Note that this object does 
not store the actual value of a configuration
item. This object is the 
model only.
  Value Attributes 
Values may have attributes associated with them in the .spec file. These
attributes are identified by UPPERCASE names and may be one of four types:
 
-  boolean - a single name enables the option.
-  string - a name followed by an equals sign, followed by a quoted string     (single or double quotes both supported)
-  keyword - a name followed by a keyword
The special prefix 'NO' on any attribute name will clear the value of
that attributes.
In support of older .spec files, the following are also supported (though
their usage is deprecated):
 
-  Single-character attribute H. This is synonymous with HIDDEN.
-  Single-character attribute M is ignored.
-  Unquoted conditions - DISPLAY_IF and ENABLE_IF may be followed by a     a space, and terminated by /DISPLAY_IF (or /ENABLE_IF) or the end of     the string.
Formally,
attrs ::= attr attrs ;
attr ::= name '=' values | name ;
values ::= value | values ';' fattr ;
value ::= quoted-string | name ;
name is made up of [-A-Z0-9]
Certain attributes define a 'process' that allows further parsing of the
value of an attribute. A process is a ref to a function that performs
this parsing. Execution of processes may be supressed by setting
$
Foswiki::Configure::LoadSpec::RAW_VALS to 1.
Processes are used to parse 'FEEDBACK' and 'CHECK' values.
  ClassMethod new($typename, %options) 
  
Constructor.
IMPORTANT NOTE
When constructing value objects in Pluggables, bear in mind that the
default value is stored as 
an unparsed perl string. This string
is checked for valid perl during the .spec load, but otherwise
stored verbatim. It must be evaled to get the 'actual' default
value.
The presence of the key (tested using 'exists') indicates whether a
default is provided or not. undef is a valid default.
  ObjectMethod getValueObject($keys) 
This is a leaf object, so there's no recursive search to be done; we just
return $this if the keys match.
  ObjectMethod getRawValue() → $rawval 
Get the current value of the key from $Foswiki::cfg.
The value returned is not expanded (embedded $Foswiki::cfg references
will be intact)
  ObjectMethod getExpandedValue() → $expandedval 
Get the current value of the key from $Foswiki::cfg.
The value returned with embedded $Foswiki::cfg references
recursively expanded. If the current value is undef, then undef
is returned. Embedded references that evaluate to undef
are expanded using the string 'undef'.
  ObjectMethod encodeValue($raw_value) → $encoded_value 
Encode a "real" cfg value as a string (if necessary) for passing
to other tools, such as UIs, in a type-sensitive way.
  ObjectMethod decodeValue($encoded_value) → $raw_value 
Decode a string that represents the value (e.g a serialised perl structure)
and return the 'true' value by applying type rules
  ObjectMethod CHECK_option($keyname) → $value 
Return the first value of the first CHECK option that contains
the key 
$opt
e.g. if we have 
CHECK="a b" CHECK="c d=99 e" in the .spec
then 
CHECK_option('c') will return true and
CHECK_option('d') will return 
99