reimplement utl::sparse_matrix<T>

+ 按照前述的在内部维护一个行列元素列表，并采用 lazy evaluation
的实现方式仅在要求返回行列元素列表时检查并按需重建列表，避免在随机设置矩阵元素时中过分频繁地重建行列元素列表。
+ 注意：使用 std::vector<T> 实现列表应该比 utl::private_array<T>
好，因为这有时能避免每一次重建时都重新分配内存。
bytes_swap funcs and utl::binary_file class

只要是为了解决二进制文件读取过程中文件的尾端类型 (endian type) 与当前机器  CPU 不同的问题
inplement log class as template

使用 template instance hack 避免这些类型的过早编译，但对 private_memory_agent
或许不能这么干？以后再研究
string_tokenizer

以与 std::basic_string 等相同模板参数的 basic_string_tokenizer
来实现，或许能提高其通用性？其实主要还是为了保证 utl 是一个 header-only 的 C++ 库