Switch to python3 and scipy from slycot

Turns out we need python3 matplotlib to make scipy work well enough to
place the poles correctly for our systems.  Rather than do it piecemeal,
do it all at once.

This includes a python opencv upgrade too to support the new python, and
a matplotlib upgrade.

Change-Id: Ic7517b5ebbfdca9cc90ae6a61d86b474f2f21b29
diff --git a/frc971/control_loops/python/polytope.py b/frc971/control_loops/python/polytope.py
index a1cba57..5aa7ba3 100644
--- a/frc971/control_loops/python/polytope.py
+++ b/frc971/control_loops/python/polytope.py
@@ -1,4 +1,4 @@
-#!/usr/bin/python
+#!/usr/bin/python3
 
 """
 Polyhedral set library.
@@ -29,7 +29,7 @@
   split_string = s.split('\n')
   width = max(len(stringpiece) for stringpiece in split_string) + 1
 
-  padded_strings = [string.ljust(stringpiece, width, ' ')
+  padded_strings = [stringpiece.ljust(width, ' ')
                         for stringpiece in split_string]
   return padded_strings