WebsiteAgent: Add `use_namespaces` and introduce cache

Namespaces are useful and sometimes essential when parsing an XML document.

Currently, WebsiteAgent strips all namespaces when `xpath` is used for extraction, so to prevent it you have to only use `css`.  This is kind of strange and should be fixed.

This should not change existing behavior especially for type `html` because namespaces are irrelevant in HTML.

While I was at it, I added expression string based caching in extraction routines.  Since we tend to repeat the same expression in a scraper, it should effectively work.