webticket: implement caching
Once we have generated a wsse_security string for a Service URI we store
it and its Authentication URI in a hash table. If another request for
the same URI is made then we simply use the stored token instead of
requesting a new one. This will speed up all operations that depend on
Web Tickets.
NOTE: callers of sipe_webticket_request() must be prepared that the
callback is called immediately from inside that function, i.e. the
callback data must be properly initialized already.
TODO: add expiration timestamp for tokens to cache.