Abstract `template` module as an external dependency.

这个文件的改动比较多。总的思路是，这里的测试只保证 template 模块 API 的基本可靠性；这里不再测试 template 模块的内部实现，而是把这部分交给 underscore.template 项目自己的单元测试。