dhcpd, add support for named groups

Things like group Special_users {

}
dhcpd, add support for omapi-key statement

You can use this along with omapi-port to specify a secure way to talk
to your DHCP server.

key myspecialkey {
    algorithm hmac-md5;
    secret "base64string==";
}

omapi-key myspecialkey;
omapi-port 7911;
dhcpd, expanding support for user-defined-options

This incorporates changes suggested by raphink.

It should be able to parse all of the following DHCP options now:

    option name-service-search code 117 = array of unsigned integer 16;
    option domain-search code 119 = string;
    option sip-servers code 120 = string;
    option classless-static-route code 121 = string;
    option space cable-labs;
    option cable-labs.tsp-primary-dhcp-server code 1 = ip-address;
    option cable-labs.tsp-secondary-dhcp-server code 2 = ip-address;
    option cable-labs.tsp-provisioning-server code 3 = string;
    option cable-labs.tsp-as-backoff-retry code 4 = { unsigned integer 32, unsigned integer 32, unsigned integer 32 };
    option cable-labs.tsp-ap-backoff-retry code 5 = { unsigned integer 32, unsigned integer 32, unsigned integer 32 };
    option cable-labs.tsp-kerberos-realm-name code 6 = string;
    option cable-labs.tsp-ticket-granting-server-utilization code 7 = boolean;
    option cable-labs.tsp-provisioning-timer code 8 = unsigned integer 8;
    option cable-labs-encapsulation code 122 = encapsulate cable-labs;
    option tftp-server-address code 150 = array of ip-address;
    option ip-telephone code 176 = string;
    option wpad-url code 252 = text;
dhcpd, fix whitespace problems with blocks

Most blocks should support braces at the end of a line or
on the next line.

Like this:

class "test class"
{

}

or

class testclass {}
dhcpd, fix for quoted characters in members of

Some of my "allow members of" statements have more complicated names
that include things like parenthesis.  This change makes it so semicolon
and space are the only things not allowed in barewords, and quotes and
newlines are the only thing not allowed in quoted things.
dhcpd known-clients allows spaces in it's value

This is a fix for lines like these:

   deny unknown clients;
   deny known clients;
   allow known clients;
   allow unknown clients;
dhcpd fix to allow subclasses values to be quoted

DHCP subclass values can have spaces in them.

Here is an example:
subclass "consoles" "Xbox 360";
subclass "consoles" "Nintendo 3DS";
subclass "consoles" Wii;
subclass "consoles" NintendoDS;
dhcpd, added support for match if suffix|option

I also relaxed the rules on matching quoted and unquoted values.

Things like:
    match if suffix (option vendor-class-identifier,6)="123456";
or
    match if option vendor-class-identifier="Brave, Warrior Pidgins";

work now.
dhcpd, adding support for set command

This allows you to define variables in your dhcp configuration.  They
can be arbitrarily complicated.

Things like this:

      set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
      set ClientMac = binary-to-ascii(16, 8, ":" , substring(hardware, 1, 6));

I also added most of the rest of the functions from dhcp-eval and listed
the limitations of the current parser.  I don't think I'm going to be
able to fix most of it but I think I'm getting into obscure features
that most people don't bother using.

At this point if they need to do very strange class maps they could put
them in an include file and not have augeas parse it.
dhcpd, added fddi to stmt_hardware

getting pretty obscure..
dhcpd, adding support for "on" statement

For things like:

on commit {
      set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
      set ClientMac = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
}
dhcpd, changing quotes on stmt_block_arg

This patch can break users parsers.

Fixes failover-peer, shared-network, class, host, zone, group, and "on" to
handle quoted values properly.

It also allows optional semicolon at the end of key {} block.
dhcpd, removed unused variable and reformatted

stmt_subclass was a little too cluttered so I changed it to multiple
lines for readability.  I had also introduced an unused lens sep_to_ncl
which I removed.
dhcpd, fix for key block puts

I discovered this after thinking I was done.  It actually was a problem
before I started messing with the code but I didn't notice it because
there was never any test for keys.
dhcpd, fix for put on dhcp option records

Type cannot be blank.  I fixed this by making it use record instead of
nesting through "type"
dhcpd, style and test changes suggested by raphink

I also updated the NEWS entry to note the incompatible change