Introduce scenario modifiers

Before this patch, scenarios were only used to select resources with
specific attributes. This commit introduces "modifiers" in scenarios,
which allows setting or modifing config attributes of resources once
they have been reserved. This way same test can be run selecting same
resources but modifying its configuration, allowing for instance running
different number of TRX, different timeslot configuration, etc.

Modifiers are described by placing a "modifiers" dictionary in any
scenario file, similar to the current "resources" one used to select
requird resources. The "modifiers" dictionary is overlaid on top of the
"resources" one resulting from combining all the "resources" dictionary
of all scenario files.

Change-Id: If8c422c67d9a971d9ce2c72594f55cde2db7550d
diff --git a/selftest/resource_test.ok b/selftest/resource_test.ok
index 884c6b3..3ec922b 100644
--- a/selftest/resource_test.ok
+++ b/selftest/resource_test.ok
@@ -222,6 +222,54 @@
 
 ~~~ end: currently reserved
 
+~~~ with modifiers:
+resources(testowner)={'arfcn': [{'_hash': 'e620569450f8259b3f0212ec19c285dd07df063c',
+            '_reserved_by': 'testowner-123-1490837279',
+            'arfcn': '512',
+            'band': 'GSM-1800'},
+           {'_hash': '022621e513c5a5bf33b77430a1e9c886be676fa1',
+            '_reserved_by': 'testowner-123-1490837279',
+            'arfcn': '514',
+            'band': 'GSM-1800'}],
+ 'bts': [{'_hash': 'd2aa7c1124943de352351b650ca0c751784da6b6',
+          '_reserved_by': 'testowner-123-1490837279',
+          'addr': '10.42.42.114',
+          'band': 'GSM-1800',
+          'ciphers': ['a5_0', 'a5_1'],
+          'direct_pcu': 'True',
+          'ipa_unit_id': '1',
+          'label': 'sysmoBTS 1002',
+          'type': 'osmo-bts-sysmo'},
+         {'_hash': '6a9c9fbd364e1563a5b9f0826030a7888fd19575',
+          '_reserved_by': 'testowner-123-1490837279',
+          'addr': '10.42.42.50',
+          'band': 'GSM-1800',
+          'ciphers': ['a5_0', 'a5_1'],
+          'ipa_unit_id': '6',
+          'label': 'Ettus B200',
+          'launch_trx': 'True',
+          'num_trx': 2,
+          'type': 'osmo-bts-trx'}],
+ 'ip_address': [{'_hash': 'fd103b22c7cf2480d609150e06f4bbd92ac78d8c',
+                 '_reserved_by': 'testowner-123-1490837279',
+                 'addr': '10.42.42.2'}],
+ 'modem': [{'_hash': '0b538cb6ad799fbd7c2953fd3b4463a76c7cc9c0',
+            '_reserved_by': 'testowner-123-1490837279',
+            'auth_algo': 'comp128v1',
+            'ciphers': ['a5_0', 'a5_1'],
+            'imsi': '901700000009031',
+            'ki': '80A37E6FDEA931EAC92FFA5F671EFEAD',
+            'label': 'sierra_1',
+            'path': '/sierra_1'},
+           {'_hash': '3a6e7747dfe7dfdf817bd3351031bd08051605c3',
+            '_reserved_by': 'testowner-123-1490837279',
+            'auth_algo': 'comp128v1',
+            'ciphers': ['a5_0', 'a5_1'],
+            'imsi': '901700000009029',
+            'ki': '00969E283349D354A8239E877F2E0866',
+            'label': 'sierra_2',
+            'path': '/sierra_2'}]}
+~~~ end: with modifiers:
 ~~~ currently reserved:
 {}