Improve performance of coverage under PyPy.

An explanation is in order:

should_trace_cache is a strictly growing key, which is to say once a key is in it, it never changes.

Further, the keys used to access it are generally constant, given sufficient context. That is to say, at any given point _trace() is called, a Sufficient Smart Compiler (tm) is able to know the key. This is because the key is determined by the physical source code line, and that's obviously invariant with the call site.

This property of a dict with immutable keys, combined call-site-constant keys is a match for PyPy's module dict, which is optimized for such workloads.

This gives a 20% benefit on the workload described at https://bitbucket.org/pypy/pypy/issue/1871/10x-slower-than-cpython-under-coverage

I have not benchmarked on a wider array of programs yet.

--HG--
branch : alex_gaynor/improve-performance-of-coverage-under-py-1411425050845
Merged in alex_gaynor/coveragepy/alex_gaynor/improve-performance-of-coverage-under-py-1411425050845 (pull request #40)

Improve performance of coverage under PyPy.