assign & swap for containers use diff allocator

主要是将 operator = 和 swap 成员函数模板化，此外应该注意 container<T, A1> 和  container<T,
A2> 是完全不同的两个类型，因此在 operator = 中进行 this != &other 的比较必须通过
utl::ptr_equal(...) 来进行
lapack wrap

改原先的 blas 和 lapack 命名空间为匿名命名空间
general blas

使用 utl::varray<T> 和 utl::matrix<T> 作为形参的常规矩阵的 BLAS 接口的外包，此外还包括一些拓展函数