improve mat44 implementation

this will make it easier to create matrices of different sizes

Change-Id: I2c1771ba0823c42d737762e2dfc2cd47eb302767
diff --git a/include/ui/vec2.h b/include/ui/vec2.h
index b4edfc6..c31d0e4 100644
--- a/include/ui/vec2.h
+++ b/include/ui/vec2.h
@@ -27,7 +27,8 @@
 // -------------------------------------------------------------------------------------
 
 template <typename T>
-class tvec2 :   public TVecArithmeticOperators<tvec2, T>,
+class tvec2 :   public TVecProductOperators<tvec2, T>,
+                public TVecAddOperators<tvec2, T>,
                 public TVecUnaryOperators<tvec2, T>,
                 public TVecComparisonOperators<tvec2, T>,
                 public TVecFunctions<tvec2, T>
@@ -73,6 +74,11 @@
 
     template<typename A>
     explicit tvec2(const tvec2<A>& v) : x(v.x), y(v.y) { }
+
+    template<typename A>
+    tvec2(const Impersonator< tvec2<A> >& v)
+        : x(((const tvec2<A>&)v).x),
+          y(((const tvec2<A>&)v).y) { }
 };
 
 // ----------------------------------------------------------------------------------------