Cleanup of Cython code

In addition to tidying up the files and splitting out 'core' functions, I implemented the Cython routine for the subpixel overlap which should speed things up. I haven't had a chance to run the before/after benchmarks yet.

I was going to post some benchmark results but it turns out that the original elliptical code was so slow that the benchmark is taking way too long to run, whereas it ran in a dozen seconds with this code, so I think it's safe to say it's faster.

Fixes #163.

cc @larrybradley @bsipocz @cdeil @eteq