Shadow config for xbuddy.

Add the capability to customize some xBuddy settings via a shadow
  configuration file, shadow_xbuddy_config.ini
- Path rewrite aliases
- xBuddy capacity
- Whether or not xBuddy manages src/build/images

Also
- Restructure the existing rewrite lookup table into an ini file
- Have devserver's autoupdate module also use the default board in
  src/scripts/.default_board

BUG=chromium:271799
BUG=chromium:260473
TEST=manual
- Checked the lookup table contents with presence/absence of shadow
  file, with overrides and additions to the base lookup file.
- Checked that the default board is used by both XBuddy and Updater
  modules.
- Pinged server for its xbuddy capacity.
- Pinged server using aliases: '', 'stable_update', and 'release'.
TEST=trybot on mario-paladin

Change-Id: I2cd6f9fda41a878da024deb7936da0c23355c351
Reviewed-on: https://gerrit.chromium.org/gerrit/65780
Reviewed-by: Joy Chen <joychen@chromium.org>
Tested-by: Joy Chen <joychen@chromium.org>
Commit-Queue: Joy Chen <joychen@chromium.org>
diff --git a/xbuddy_unittest.py b/xbuddy_unittest.py
index 4639a26..24c765f 100644
--- a/xbuddy_unittest.py
+++ b/xbuddy_unittest.py
@@ -61,7 +61,8 @@
     """Basic test of _LookupChannel. Checks that a given suffix is handled."""
     self.mox.StubOutWithMock(gsutil_util, 'GetLatestVersionFromGSDir')
     mock_data1 = '4100.68.0'
-    gsutil_util.GetLatestVersionFromGSDir(mox.IgnoreArg()).AndReturn(mock_data1)
+    gsutil_util.GetLatestVersionFromGSDir(
+        mox.IgnoreArg(), with_release=False).AndReturn(mock_data1)
     mock_data2 = 'R28-4100.68.0'
     gsutil_util.GetLatestVersionFromGSDir(mox.IgnoreArg()).AndReturn(mock_data2)
     self.mox.ReplayAll()
@@ -192,7 +193,7 @@
     # Get 6 different images: a,b,c,d,e,f
     images = ['a', 'b', 'c', 'd', 'e', 'f']
     for c in images:
-      self.mock_xb.Get(('remote', c, 'R0', 'test'), None)
+      self.mock_xb.Get(('remote', c, 'R0', 'test'))
       time.sleep(0.05)
 
     # check that b,c,d,e,f are still stored
@@ -205,9 +206,9 @@
       self.assertEqual(result[i][0], '%s-release/R0' % images[i])
 
     # Get b,a
-    self.mock_xb.Get(path_b, None)
+    self.mock_xb.Get(path_b)
     time.sleep(0.05)
-    self.mock_xb.Get(path_a, None)
+    self.mock_xb.Get(path_a)
     time.sleep(0.05)
 
     # check that d,e,f,b,a are still stored