Preserve global variables for url-retrieve

url-retrieve uses global variables to define its behaviour.
It looks like at least in emacs 24 those variables can get reset
before deferred url-retrieve is executed.
This patch saves the states of those variables into
lexically-scoped variable and restores them right before
url-retrive is called.

With this ptch things like following work as expected:
    (let* ((url-request-method "POST")
           (url-request-extra-headers `(("Authorization" . ,auth))))
	  (deferred:$
	    (deferred:url-retrieve url)
	    (deferred:nextc it
	      (lambda (buf)
		(kill-buffer buf)))))

(similar code is used in butler package)
deferred:url-post: use deferred:url-retrieve

Make deferred:url-post use deferred:url-retrieve to properly
set global vars that are used by url package
Change deferred:url-post so it doesn't remove all extra headers
possibly set by caller
Add support for 'silent' 'inhibit-cookies' params

deferred:url-retrive now supports 'silent' and 'inhibit-cookies'.
deferred:url-post, deferred:url-get support them as well.
Update doc for deferred::url-retrieve