chore(docs): load pages data asynchronously

This is in preparation for moving the work to a WebWorker but will also facilitate,
in the future, removing the `pagesData` angular module altogether.
chore(docs): use a WebWorker for the search index, if available

This commit refactors how the search index is built. The docsSearch service
is now defined by a provider, which returns a different implementation of
the service depending upon whether the current browser supports WebWorkers
or now.

* **WebWorker supported**: The index is then built and stored in a new worker.
The service posts and receives messages to and from this worker to make
queries on the search index.

* **WebWorker no supported**: The index is built locally but with a 500ms
delay so that the initial page can render before the browser is blocked as
the index is built.