[sieve] add imap4flags reference

added RFC 5232 to references in preparation of implementing "imap4flags"
sieve extension

Big changes will be the addition of:
- the "hasflag" test
- the ":flags" argument to "keep" and "fileinto"

Additionally, "mark" and "unmark" actions will be deprecated.
specs.html: add Sieve imap4flags spec
[sieve] add parser support for imap4flags

added parser support for:
- hasflag test
- :flags tagged argument to fileinto and keep

also added imap4flags to sieve_extensions in imapoptions
[sieve] add imap4flags awareness to sieve interpreter

add the following to the sieve interpreter:
- awareness of the hasflag test
- test whether imap4flags is 'require'd
part of parser support for imap4flags
[sieve] update bytecode to support imap4flags

add imap4flags support to bytecode, specifically:
- updated B_KEEP to support :copy and :flags
  - :copy support in KEEP had been previously overlooked
- updated B_FILEINTO to support :flags
- new BC_HASFLAG to support imap4flags hasflag test
[sieve] imap4flags support for bytecode generator

update bc_generate.c for imap4flags as follows:
- add hasflag test support to bc_test_generate()
  - based on header test
- add :copy and :flags support to KEEP
  - :copy is an integer; :flags is a stringlist
- add :flags support to FILEINTO
[sieve] update sievec to use sieve_register_hasflag()
[sieve] imap4flags support for bytecode emitter

update bc_emit.c for imap4flags as follows:
- add hasflag test support to bc_test_emit()
  - based on header test
- add :copy and :flags support to KEEP
  - :copy is an integer; :flags is a stringlist
- add :flags support to FILEINTO
  - duplicated code that had been shared between FILEINTO and REDIRECT
sieve.y: fix use after free() in parser

Don't free the flags stringlist because it is used later.

This caused much headache.  stringlist pointers to what was expected
to be flags ended up being another stringlist later allocated, having
nothing to do with the expected flags stringlist.
[sieve] enable parser support for :copy and :flags in KEEP

enable copy and imap4flags extensions support for KEEP action
sieve.y: fix :flags argument to KEEP

we were accessing the wrong member of the union in the commandlist
[sieve] imap4flags support for bytecode decompiler

update sieved.c for imap4flags as follows:
- add hasflag test support to dump2_test()
- add :copy and :flags support to KEEP in dump2()
- add :flags support to FILEINTO in dump2()
bc_dump.c: hasflag test support

I can't find anywhere that bc_dump.c is actually used.  Is this work
useful?  Still need KEEP and FILEINTO support of :flags
[sieve] bc_emit.c: fix comment

Comments were backwards of what was actually happening.
Relation comes before comparator in the bytecode.
in progress changes