math/matrix: Fix constructor from other matrix

* Removed constructor from data pointer and create a static function
  matrix::from_data() instead (this caused conflicts with the
  constructor from another matrix, as matrices can be implicitly casted
  to a data pointer through operator T *())
! Fixed constructor for matrices from column vectors: Added comparison
  C != 1, as this was a valid alternative for creating vectors from
  vectors (C == 1, therefore a single parameter was enough)
* The constructor for matrices from other matrices now zeroes all
  uninitialized fields