[sieve] make sieve_{add,remove}flag() functions case insensitive
[sieve] bc_eval.c: support for :flags parameter on KEEP and FILEINTO

The actionflags parameter holds the value that was given in :flags
[sieve] bc_emit.c: add comments for B_FILEINTO

make sure the order of parameters is well-defined
[sieve] add legacy test cases for :flags argument to fileinto and keep
[sieve] bc_eval: track current value of internal flags variable

Track the current value of the internal flags variable so that the
hasflag test has something to compare to.

- added workingflags parameter to sieve_eval_bc()
 - update workingflags parameter in actions MARK, UNMARK, SETFLAG,
   ADDFLAG, and REMOVEFLAG
- pass workingflags parameter to eval_bc_test() for hasflag test
[sieve] bc_eval.c: support for imap4flags hasflag test

Should work with typical usage.  Need to evaluate for :count support.

Also added comment to bc_generate.c and bc_emit.c to add support for
:count to hasflag, possibly in conjunction with :regex
[sieve] update sieve_fileinto() and sieve_keep() to use :flags parameter

updated imap/lmtp_sieve.c and sieve/test.c
[sieve] sieve.y: verify :flags parameter is a valid list of flags
[sieve] sieve.y: free_ftags(): free flags stringlist
[sieve] sieve.y: support for space-separated flags within a string

Effectively change "flag1 flag2" to ["flag1", "flag2"]
[sieve] tree.c: free flags stringlists in free_tree() and free_test()
[sieve] sieve.y: 'require' imap4flags for hasflag test and :flags arg
[sieve] Anticipate bytecode changes for VARIABLES extension

Combined generation of bytecode for hasflag test and header test into
a single case.

The bytecode changes for the set/add/remove-flag actions will be done
at a later date since they will be re-definitions anyway.
[sieve] bc_dump.c: support imap4flags keep, fileinto, hasflag

Added support for dumping mostly-flat bytecode as generated by
bc_generate.c for the modified keep and fileinto actions, supporting
the :flags argument.  Also added support for dumping mostly-flat
bytecode for new hasflag test.

Modified the comment at the start of the file to better describe the
file.
[sieve] sieved: update bytecode decompiler for imap4flags

:flags arguments to keep and fileinto actions
hasflag test
[sieve] added varlist.{c,h} in anticipation of the variables extension

Defines a named linked-list of strarray_t's.  Each variable is stored as
a strarray_t in var, with the variable name stored as a string in name.
[sieve] remove dependence on actionflags parameter

The imap4flags extension introduced an actionflags parameter.  It
helped decide whether to use the internal imapflags variable when
appending a message, or whether to use user-specified flags when filing
the message.  This commit removes dependence on that parameter.  The
actionflags parameter can now safely be removed.
[sieve] bc_eval.c: add :count match-type support to hasflag test

We can't have :count and :regex at the same time since they are both
MATCH-TYPEs
[sieve] move verify_flaglist() to flags.c for reuse elsewhere

Once we add the variables extension, we won't be able to check for
flag validity in the parser (sieve.y).  This allows us to use
verify_flaglist() wherever else we need it.
[sieve] sieve.y: an invalid flag should not cause a parsing error

[IMAP4FLAGS] Section 2 "General Requirements for Flag Handling" says
"If a flag validity check fails, the flag MUST be ignored", which for
us means that we simply remove the invalid flag from the list.