Restore support for data and file urls

This was removed from the base list of protocol handlers in Chromium 29, so
needs to be explicitly added.  Also, copy the implementation of IsHandledURL
from ShellContentBrowserClient into blpwtk2::ContentBrowserClientImpl.

For details, see:
  https://chromiumcodereview.appspot.com/11931024
Fix the Profile public interface

This commit fixes a couple of issues with the Profile public interface:

* 'setDiskCacheEnabled' should really be a flag specified at Profile creation
  time.
* There is no way for the application to manage lifetime of the Profile.

Now, the application uses a 'ProfileCreateParams' object to specify the
construction parameters, and will use the 'Profile::destroy' method when it no
longer needs to use the Profile.  This follows the same pattern used for
creating the Toolkit and WebView objects.

Note that right now, the private implementation still uses the 'ProfileManager'
to keep the Profile objects alive until the Toolkit is destroyed.  This will be
rectified in a future commit when we cleanup the private implementation of
Profile.
Add webkit_resources to blpwtk2.dll

This enables things like multimedia controls to show up correctly.
Refactor Profile implementation

Previously, the ProfileImpl class contained the logic to update the
ProxyService config and update the PrefService for spellcheck config.

This commit moves that logic to BrowserContextImpl, so ProfileImpl is just
responsible for posting the config structures to the browser-main thread.  This
commit also switches the dependency of BrowserContextImpl to ProfileImpl by
making ProfileImpl depend on BrowserContextImpl instead.  BrowserContextImpl
now has no references to ProfileImpl.

Note that with this change, the toolkit threads are started when creating the
first Profile, instead of waiting for the first WebView.  This simplifies
ProfileImpl because it no longer needs to wait to get the ui loop.
Remove FeedbackSender

This is Chrome-specific code that is not useful for us at the moment.
Remove references to BrowserContext in URLRequestContextGetter

BrowserContextImpl lives in the UI thread, and URLRequestContextGetterImpl
lives in both the UI thread and the IO thread (using RefCountedThreadSafe).
Previously, URLRequestContextGetterImpl would get the ProxyService, cache path
etc from the BrowserContextImpl.  This prevented us from being able to safely
destroy browser contexts until after threads have stopped.

This commit makes it so that URLRequestContextGetterImpl will handle
ProxyService creation and configuration itself, and cache settings are provided
in the constructor.

Also, we previously created the URLRequestContextGetterImpl when we got the
protocol handlers.  This commit changes that so that we create it when
constructing the BrowserContextImpl.  This simplifies BrowserContextImpl a bit
because we know we always have a reference to URLRequestContextGetterImpl.
However, we will assert that we still always get the protocol handlers before
GetURLRequestContext() is called.
Delete scoped_dirs from %TEMP% on startup

If the process is not shutdown gracefully, it leaves behind a bunch of
directories in %TEMP% with the pattern "scoped_dir<pid>_<rand-number>".  These
temporary directories accumulate over time and are never cleaned up.

This commit adds some code that is run whenever blpwtk2 is started.  It scans
the temp path for such directories and removes them if they don't correspond to
any currently running pid.  Note that we only delete 100 directories at a time
so that blpwtk2 startup time is not adversely affected.