[Extensions] Route messages to the appropriated server

Based on the extension name and the extension ID, we route the messages
to the appropriated ExtensionServer running on the Extension thread or the
Browser thread.

On the in-process extensions, 2 messages that are normally directed to the
ExtensionServer on the Extension Process are now completely handled by the
filter. One example is the GetExtensions message that has to combine a list
of available extensions from two different servers in a single reply.
[Extensions] Run external extensions on the Browser Thread when single process

When using the single process mode, external extensions will run on the UI
process by default. This is more compatible with the multi process mode where
the external extensions are running in the main thread of the Extension Process.