Uniform treatment of search queries

Our approach to building search URLs for the default search engine and for custom search engines has been different.  See #1334 for a case which is broken.  In fact, if you define Wikipedia to be your default search engine, then our long-established existing implementation is broken too

This PR introduces a consistent approach to building search URLs:
- URL encode each "word"
- Join url-encoded words with `+` instead of `Space`.

This is how chrome handles custom search engines, and seems (?) to work in more cases.

Note... There's a long discussion in #1169 about custom search engines which are admitted by our current implementation but probably shouldn't be.  This PR breaks such custom search engines (e.g it breaks a "custom search engine" which calls arbitrary Javascript).

Replaces #1335.
Fixes #1334.