Fix #121: sudo syntax highlighting incorrectly

Parse sudo command line in order to highlight the options correctly
Do not leak a variable: cdpath_dir.

Leaking a variable that holds a path in CDPATH could easily end up appearing on your prompt like `~cdpath_dir/subdir`.
do not remove quotes when checking assignments

Zsh does not allow the variable name or the equals sign to be quoted or
escaped.  The previous code incorrectly highlighted the following
examples as assignments:

    $ 'x=y'
    zsh: command not found: x=y
    $ x\=y
    zsh: command not found: x=y
    $ "x"=y
    zsh: command not found: x=y
    $ \x=y
    zsh: command not found: x=y
highlight array assignments of the form x[y]=...

This code is more lenient than bash.  Examples:

    $ x[y[]=
    zsh: no matches found: x[y[]=
    $ x[][]=
    zsh: no matches found: x[][]=

The proper solution is to look inside the [...] and make sure that all
unescaped/unquoted square brackes are matched, but that is a heck of
a lot more complicated than this simple 8-character patch.
protect alias expansion from interpreting aliases as options

If one defines aliases like `++` the alias builtin tries to interprete these
as options so they have to be protected like this

    alias -- ++=true

The same goes for a call to `alias` in order to expand the alias again.
Merge pull request #128 from knu/patch-1

Do not leak a variable: cdpath_dir.
Merge pull request #133 from lucc/master

protect alias expansion from interpreting aliases as options
Merge pull request #131 from MarkLodato/array-assignments

Properly highlight array assignments
Merge pull request #125 from acatton/fix-121

Fix #121: sudo syntax highlighting incorrectly