This test is designed to verify that an ONOS cluster behaves correctly when
some ONOS nodes are partitioned. Currently, we will partition nodes so that
each raft partition will lose a member, but we make sure that there is always
a majority of nodes available in each partition. We are partitioning the nodes
by using iptable firewall rules

As written, the test only supports an ONOS cluster of 3,5, or 7 nodes.
This is because the test doesn't apply to a single node cluster, ONOS clusters
should be deployed in odd numbers, and the raft partition generation and node
partitioning scheme used doesn't give the same properties for clusters of more
than 7 nodes. Namely, each partition won't have exactly one node unavailable.

The gerneral structure for the test:
- Startup
- Assign switches
- Verify ONOS state and functionality
    - Device mastership
    - Intents
    - Leadership election
    - Distributed Primitives
- Partition some ONOS nodes
- Verify ONOS state and functionality
- Heal partition
- Verify ONOS state and functionality
- Dataplane failures
    - link down and up
    - switch down and up
