Fix bug 760

This commit fixes bug 670 by introducing a new PrimitiveDoesNotExist
exception that will be raised if ExecutePrimitive is called but the
primitive does not exist in the charm.

This also bumps the required version of websocket to match libjuju,
along with other minor tweaks to the test framework

Change-Id: I028c3c9c19fbfa87c8feb788446a290d66112043
Signed-off-by: Adam Israel <adam.israel@canonical.com>
diff --git a/setup.py b/setup.py
index d836d2f..2111150 100644
--- a/setup.py
+++ b/setup.py
@@ -25,7 +25,7 @@
         'pyRFC3339>=1.0,<2.0',
         'pyyaml>=3.0,<4.0',
         'theblues>=0.3.8,<1.0',
-        'websockets>=4.0,<5.0',
+        'websockets>=7.0,<8.0',
         'paramiko',
         'pyasn1>=0.4.4',
     ],