represent weights in a sparse, pure Python data structure. BUGGY (accuracies do not match) but preliminary speed test shows no improvement anyway. see #8
use dict.iteritems() instead of items() (though this is currently dead code)
sparse weights: bug fixed + Cython typing; also caching the transition weights
Merge branch 'sparse-weights'. Fixes #8. Also include Cython HTML reports.