Use setrawcookie() + rawurlencode () instead of setcookie()

As setcookie() encodes spaces as '+', but most Javascript
implementations relying on decodeURI()/decodeURIComponent() do not
decode '+' as space. Encoding spaces as %20 is understood everywhere.
Add $encode argument to AgaviWebResponse::setCookie()

So users can use a custom encoding of cookie values if needed, e.g. to
match the encoding of a Javascript library