Add hb_auto_t

Part of https://github.com/harfbuzz/harfbuzz/issues/1017
diff --git a/src/hb-private.hh b/src/hb-private.hh
index d27d580..a9a6bda 100644
--- a/src/hb-private.hh
+++ b/src/hb-private.hh
@@ -701,11 +701,16 @@
 };
 
 template <typename Type>
-struct hb_auto_array_t : hb_prealloced_array_t <Type>
+struct hb_auto_t : Type
 {
-  hb_auto_array_t (void) { hb_prealloced_array_t<Type>::init (); }
-  ~hb_auto_array_t (void) { hb_prealloced_array_t<Type>::fini (); }
+  hb_auto_t (void) { Type::init (); }
+  ~hb_auto_t (void) { Type::fini (); }
+  private: /* Hide */
+  void init (void) {}
+  void fini (void) {}
 };
+template <typename Type>
+struct hb_auto_array_t : hb_auto_t <hb_prealloced_array_t <Type> > {};
 
 
 #define HB_LOCKABLE_SET_INIT {HB_PREALLOCED_ARRAY_INIT}