TimSort for sort.Interface

In this merge:

1. An <code>Ints</code> function is provided. It sorts <code>[]int</code>. It is faster than normal <code>sort.Sort</code> in every shape.
1. <code>TimSort</code> sorts data with <code>sort.Interface</code>. It is generally faster than <code>Sort</code>, if the data is stored in a slice of the original data-structure(e.g. <code>[]record</code>). Faster than <code>sort.Sort</code> if the data is partially sorted (or reverse). But slower than build-in <code>sort.Sort</code> for totally random data.
1. If the data to be sorted is in <code>[]interface{}</code>, <code>Sort</code> is the best choice. It is faster than build-in sort.
1. I fixed a vital bug in <code>IsSorted</code>.

In the benchmarks, I let the standard-sort use <code>[]record</code> instead of <code>[]interface{}</code>, since I think that is a more commonly used pattern and runs much faster.