Allow the embedder to change the delegate after the creation of the web view
Expose file chooser API

This commit adds to following methods:

* WebViewDelegate::runFileChooser
* WebView::fileChooserCompleted

This allows applications to respond to file selection requests made by the
page.
Split setTakeFocusOnMouseDown into keyboard focus and logical focus

In a previous commit [1], we added the ability for applications to disable the
default chromium behavior where the WebView's HWND takes focus on mouse down.
This commit splits that flag into two separate flags:

* whether or not the WebView will take keyboard focus on mousedown (i.e.
  ::SetFocus on the HWND).
* whether or not the WebView will take logical focus on mousedown (i.e. letting
  the underlying WebKit WebView know about focus.  This affects whether the
  focused UI is displayed, caret etc).

This commit also introduces a new WebViewProperties structure that will hold
the properties of the WebView together in one place.  Right now, this structure
only holds the creation properties, but this should be expanded in the future
to hold all the other properties as well.  The main motivation for this
structure is so that the WebView constructors don't keep growing each time we
add a new property.

[1] 8f31279 "Add option to disable SetFocus on mouse down"
Split WebView::focus into keyboard focus and logical focus

This allows applications to control keyboard focus and logical focus
independently.