Escape double quotes when dumping regexp

Graphviz DOT is using double quotes to quotes the string of a label. Escape
double quotes to avoid parsing errors with graphviz when the regexp of the lens
includes double quotes.
Add aug_rename to rename node labels without moving them in the tree.
Add entry_list and entry_list_nocomment to inifile.aug
Use entry_list_nocomment in subversion.aug
Fix bug #293 primary statement in dhcpd.conf

The "primary" statement does not support any arguments, while it should when
it's used in the "zone" block statement. The solution is to add the primary
statement in the statements that requires a string argument. The primary
statement can thus take a value or not, and thus do not cause any ambiguity in
the put direction.
Fix typo in previous commit

Adjust comment and remove duplicated test case for primary statement in
dhcpd.conf lens.
* src/augeas.c: use constants for "lens", "incl" and "excl"
Add a way to specify explict transforms

Allow specifying transforms in three different ways:
 - an aug_transform API call
 - a transform command for aug_srun
 - a -t|--transform option to augtool
* src/augtool.c (add_transforms): move free() to prevent free(NULL) and run on
  each iteration
Ldif: new lens to read LDIF files per RFC2849
Arrange commands into groups for better help

  * src/augrun.c: create group definitions, move commands into arrays per
    group, update help output to iterate over and announce each group
Fix augtool --transform documentation

  * src/augtool.c (usage): -t syntax is now same as 'transform' command
  * src/augrun.c (cmd_transform_def): improve description
Fix issues reported by clang static analyser

  * src/transform.c (text_retrieve): initialise variable before use
  * src/transform.c (filter_generate): remove duplicate variable assignment
  * src/jmt.c (parse_add_item): ensure return is defined on goto error
Fix regression in permissions of created files

Commit 16387744 changed temporary file creation to use mkstemp, resulting in
new files being created with 0600 permissions.  For brand new files created
through Augeas, their permissions stayed at 0600 rather than being set by the
umask as before.

  * src/transform.c (transform_save): chmod after creating new files to
    permissions implied by the umask
Hosts_Access: permit more client list formats

  * whitespace separated lists
  * @netgroups
  * IPv6 hosts, inc. zone indices
  * paths to lists of clients
  * wildcards

Mostly fixes ticket #256
Hosts_Access: add hosts_options(5) support

Fixes ticket #256
Simplevars: use to parse /etc/default/grub_installdevice

Ticket #290
Ignore Eclipse settings directory
Fix memory leak in dbg_visit

dbg_visit() calls format_lens() to display the lens information. The caller of
format_lens() must free the memory allocated, just do it.
Build AST while visiting the parse v2

The AST records the structure of the parse according to the lens tree. The
indices of the text matched is recorded for later use.

Changed in v2:
  * Additional checks for correctness
  * Create the root node in rec_process()
  * Merge ast_add_child() and ast_append()
Generic square lens v4

Lens square now takes lenses instead of regular expressions as arguments, as follow:

  square left body right

The left and right lenses must accept the same language. The left lens can be
either key or del, while the right lens must be del.

This patch changes the semantic of the square lens and is thus not backward
compatible. Modules must be updated accordingly. The definition of the square
lens should now be definitive, and later addition may add support for
additionnal lenses for left and right sides.

  * builtin.c: change definition of the square lens.
  * get.c: use the AST to recover the left and right strings matched by the
    square lens.Regular lenses are handled with regexp registers.
  * put.c: the variable state->override is used to indicate to a del part of a
    square lens that it should use the provided value instead of the saved
    string in the skel or the default value.
  * lens.c: change the lns_make_square to match the new structure.

Update square lens test to use lens arguments instead of regexp. The change
consists to replace "square re lens" into "square right lens left", where right
and left are lenses. Hence, legacy lens is converted this way:

Legacy:
  let x = square re body

New definition:
  let x =
	let right = key re in
	let left = del re "" in
	square right body left

This patch splits pass_square.aug into regular and recursive tests. Other tests
are added to verify constraints on the square lens arguments and typechecking.

Finally, this patch updates httpd and xml lens according to square args

Changes in v2:
  * protect arg with parenthesis in child_first and child_last macros
  * drop flag in_square, avoid lens copy, drop square_left/right strings
    replaced by ast for rec lens and regs for regular lens. This
    processing is more general than the previous approach, and thus
    will help to extends the square lens more in the future.
Changed in v3:
  * Split the patch into smaller units
Changed in v4:
  * Rejoin patches to avoid breaking make check

Signed-off-by: Francis Giraldeau <francis.giraldeau@gmail.com>