Add proto compilation and parsing capability

* Add a tools library proto_utils to compile and import protobuf
  messages for Python
* Add bt_metrics_utils library for parsing Bluetooth metrics
* Created unit tests for the above tool
* Created a generic metric test BtMetricsTest to verify basic metric
  functions and demonstrate how such a test should be created

Bug: 34692486
Test: Unit tests
Change-Id: Ia608b3e6f03b0c2f9071169d2af9c26c5c48efed
diff --git a/acts/framework/setup.py b/acts/framework/setup.py
index 3ec3d9b..97487cf 100755
--- a/acts/framework/setup.py
+++ b/acts/framework/setup.py
@@ -29,6 +29,7 @@
     'mock<=1.0.1',
     'pyserial',
     'shellescape',
+    'protobuf',
 ]
 
 if sys.version_info < (3, ):
@@ -110,7 +111,8 @@
             acts_module: The acts module to uninstall.
         """
         for acts_install_dir in acts_module.__path__:
-            self.announce('Deleting acts from: %s' % acts_install_dir, log.INFO)
+            self.announce('Deleting acts from: %s' % acts_install_dir,
+                          log.INFO)
             shutil.rmtree(acts_install_dir)
 
     def run(self):
@@ -127,8 +129,9 @@
         try:
             import acts as acts_module
         except ImportError:
-            self.announce('Acts is not installed, nothing to uninstall.',
-                          level=log.ERROR)
+            self.announce(
+                'Acts is not installed, nothing to uninstall.',
+                level=log.ERROR)
             return
 
         while acts_module:
@@ -143,19 +146,22 @@
 
 
 def main():
-    setuptools.setup(name='acts',
-                     version='0.9',
-                     description='Android Comms Test Suite',
-                     license='Apache2.0',
-                     packages=setuptools.find_packages(),
-                     include_package_data=False,
-                     tests_require=['pytest'],
-                     install_requires=install_requires,
-                     scripts=['acts/bin/act.py', 'acts/bin/monsoon.py'],
-                     cmdclass={'test': PyTest,
-                               'install_deps': ActsInstallDependencies,
-                               'uninstall': ActsUninstall},
-                     url="http://www.android.com/")
+    setuptools.setup(
+        name='acts',
+        version='0.9',
+        description='Android Comms Test Suite',
+        license='Apache2.0',
+        packages=setuptools.find_packages(),
+        include_package_data=False,
+        tests_require=['pytest'],
+        install_requires=install_requires,
+        scripts=['acts/bin/act.py', 'acts/bin/monsoon.py'],
+        cmdclass={
+            'test': PyTest,
+            'install_deps': ActsInstallDependencies,
+            'uninstall': ActsUninstall
+        },
+        url="http://www.android.com/")
 
 
 if __name__ == '__main__':