Dedulicate make_unique

This also gets us off of the WPILib one which goes away for 2019.

Change-Id: I0436ce8fd477bbb27d9b0a7c4832dad01c9bad35
diff --git a/y2012/BUILD b/y2012/BUILD
index fd9119b..5e85c3d 100644
--- a/y2012/BUILD
+++ b/y2012/BUILD
@@ -6,12 +6,12 @@
         "joystick_reader.cc",
     ],
     deps = [
-        "//aos/time:time",
-        "//aos/actions:action_lib",
-        "//aos/logging",
-        "//aos/util:log_interval",
-        "//aos/input:joystick_input",
         "//aos:init",
+        "//aos/actions:action_lib",
+        "//aos/input:joystick_input",
+        "//aos/logging",
+        "//aos/time",
+        "//aos/util:log_interval",
         "//frc971/autonomous:auto_queue",
         "//frc971/control_loops/drivetrain:drivetrain_queue",
         "//frc971/queues:gyro",
@@ -35,16 +35,17 @@
     ],
     restricted_to = ["//tools:roborio"],
     deps = [
-        "//aos/stl_mutex:stl_mutex",
-        "//aos/time:time",
+        "//aos:init",
+        "//aos:make_unique",
         "//aos/controls:control_loop",
         "//aos/logging",
         "//aos/logging:queue_logging",
-        "//aos/robot_state:robot_state",
+        "//aos/robot_state",
+        "//aos/stl_mutex",
+        "//aos/time",
         "//aos/util:log_interval",
         "//aos/util:phased_loop",
         "//aos/util:wrapping_counter",
-        "//aos:init",
         "//frc971/control_loops:queues",
         "//frc971/control_loops/drivetrain:drivetrain_queue",
         "//frc971/wpilib:buffered_pcm",
diff --git a/y2012/wpilib_interface.cc b/y2012/wpilib_interface.cc
index 6d4fcff..b5be8f4 100644
--- a/y2012/wpilib_interface.cc
+++ b/y2012/wpilib_interface.cc
@@ -19,15 +19,16 @@
 #include "frc971/wpilib/wpilib_robot_base.h"
 #undef ERROR
 
+#include "aos/init.h"
 #include "aos/logging/logging.h"
 #include "aos/logging/queue_logging.h"
+#include "aos/make_unique.h"
+#include "aos/robot_state/robot_state.q.h"
+#include "aos/stl_mutex/stl_mutex.h"
 #include "aos/time/time.h"
 #include "aos/util/log_interval.h"
 #include "aos/util/phased_loop.h"
 #include "aos/util/wrapping_counter.h"
-#include "aos/stl_mutex/stl_mutex.h"
-#include "aos/init.h"
-#include "aos/robot_state/robot_state.q.h"
 
 #include "frc971/control_loops/drivetrain/drivetrain.q.h"
 #include "frc971/wpilib/buffered_pcm.h"
@@ -50,15 +51,11 @@
 using ::frc971::control_loops::drivetrain_queue;
 using ::y2012::control_loops::accessories_queue;
 using namespace frc;
+using aos::make_unique;
 
 namespace y2012 {
 namespace wpilib {
 
-template <class T, class... U>
-std::unique_ptr<T> make_unique(U &&... u) {
-  return std::unique_ptr<T>(new T(std::forward<U>(u)...));
-}
-
 double drivetrain_translate(int32_t in) {
   return -static_cast<double>(in) /
          (256.0 /*cpr*/ * 4.0 /*4x*/) *