Help doesn't render with FlagValuesProxy.
Example:

```
[:~/git/PerfKitBenchmarker] [perfkit] release-0.23.0+* 1 ± python pkb.py --benchmarks redis_ycsb  --machine_type n1-standard-4 --json_output redis_ycsb.json
ERROR:root:Unknown command line flag 'json_output'
Usage: pkb.py ARGS
<perfkitbenchmarker.context.FlagValuesProxy object at 0x7f51910bc050>
```

@ehankland - do you have a minute to look at this? If not assign back to me.

diff --git a/perfkitbenchmarker/context.py b/perfkitbenchmarker/context.py
index 22274e9b..c8a348b9 100644
--- a/perfkitbenchmarker/context.py
+++ b/perfkitbenchmarker/context.py
@@ -63,23 +63,24 @@ class FlagValuesProxy(object):
     else:
       return flags.FLAGS
 
-  def __setattr__(self, name, value):
-    self._thread_flag_values.__setattr__(name, value)
 
-  def __getattr__(self, name):
-    return self._thread_flag_values.__getattr__(name)
-
-  def __setitem__(self, key, value):
-    self._thread_flag_values.__setitem__(key, value)
-
-  def __getitem__(self, key):
-    return self._thread_flag_values.__getitem__(key)
-
-  def __call__(self, argv):
-    return self._thread_flag_values.__call__(argv)
-
-  def FlagDict(self):
-    return self._thread_flag_values.FlagDict()
+def _AddProxyMethod(f_name):
+  """Adds a method to FlagValuesProxy that forwards to _thread_flag_values."""
+  def f(self, *args, **kwargs):
+    return getattr(self._thread_flag_values, f_name)(*args, **kwargs)
+  f.__name__ = f_name
+  f.__doc__ = 'Proxied ' + f_name
+  setattr(FlagValuesProxy, f_name, f)
+
+
+# TODO: introduce a more generic proxy.
+for _f_name in ['FlagDict', 'Reset', 'SetDefault', 'RegisteredFlags',
+                'FlagValuesDict', '__contains__', '__iter__', '__call__',
+                '__setattr__', '__getattr__', '__setitem__', '__getitem__',
+                '__str__']:
+  _AddProxyMethod(_f_name)
+del _f_name
+del _AddProxyMethod
 
 
 BENCHMARK_FLAGS = FlagValuesProxy()
['perfkitbenchmarker/context.py']