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, and 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.
I find this hard to follow.  Could we use a `begin` ... `end`?

Also, with multi-line blocks, I prefer to use `do` ... `end` instead of `{` ... `}`, as per https://github.com/styleguide/ruby .  What do you think?