Custom WebView, WebViewClient and WebChromeClient

Supports the following:
- Showing JS alerts.
- Logging console messages in debug mode.
- Image file upload
- Video playback, inline or fullscreen.
- Handling of URLs and sending them off to the default web browser if we can't handle it.
- Support for geolocation.
Refactored activities and webview widget