chromeos: 1st draft of ProxyConfigService for chromeos

what this cl is:
- a REALLY bare skeleton implementation of ProxyConfigService for chromeos (lots of design details remain to be worked out on the chromeos side, but i needed to get something basic up)
- focused on getting chrome part correct, extracting design flow and implementation from linux variant that are relevant to chromeos, e.g.: 
  - provide access of ProxyConfigService interface on IO thread
  - provide methods on UI thread for UI to read/modify proxy config (like linux's GConf notifications on UI thread)
  - fetch initial config on UI thread (this is not absolutely necessary for chromeos, 'cos i don't use GConf, but i just follow linux for now)
  - however, the class is RefCountedThreadSafe (so that both net::ProxyService and DOMUI can access it), and the code resides in chrome/browser/chromeos dir instead of net/proxy.  
  - design details are in .h files
- initial config is hardcoded as pac script and loaded as owner (TODO: load this from cros settings persisted on chromeos device)
  - this should work like the current chromeos session manager which sets the auto-proxy environment variable in login script to the same pac script
- implement an augmented analogue to net::ProxyConfig to hold actual proxy config and UI settings (e.g. source and readonly attributes)
  - backend uses this as the main proxy config, and only converts it to net:::ProxyConfig for network stack on the IO thread in net::ProxyService::GetLatestProxyConfig.
  - UI methods also use this structure
- provide methods to get and set configs from UI thread 
  - UI can use dom_ui->GetProfile()->GetChromeOSProxyConfigServiceImpl() to access these methods on the UI thread
  - these methods are by no means final
    - i only added them here to verify the design flow that modifications can be made from UI thread and picked up by IO thread.
    - david and i will improve or modify them to whatever works best for frontend and backend.
- unittest that tests most functionalities: socks and bypass_rules will be enabled in a later cl.

TODOs after this cl:
- work with UI, load initial config as owner from cros settings
- implement policy mechanism, merge it with owner during initial load and modifications
- persist proxy settings
- etc etc etc

BUG=chromium-os:5127
TEST=nothing yet.

Review URL: http://codereview.chromium.org/3047052

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57204 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi
index f0d254b1..e189e30a 100644
--- a/chrome/chrome_browser.gypi
+++ b/chrome/chrome_browser.gypi
@@ -617,6 +617,9 @@
         'browser/chromeos/pipe_reader.h',
         'browser/chromeos/preferences.cc',
         'browser/chromeos/preferences.h',
+        'browser/chromeos/proxy_config_service.h',
+        'browser/chromeos/proxy_config_service_impl.cc',
+        'browser/chromeos/proxy_config_service_impl.h',
         'browser/chromeos/pulse_audio_mixer.cc',
         'browser/chromeos/pulse_audio_mixer.h',
         'browser/chromeos/status/clock_menu_button.cc',