Implement kernel functions for tesseroid forward modeling

Separate the tesseroid functions into kernels. Clean up the Cython code (very messy and not very fast) and make more/better tests.

Checklist:
- [ ] Create/update docstrings
- [ ] Make tests for new code
- [ ] All tests pass
- [ ] Can be merged
- [ ] Changelog entry
- [ ] Benckmark
- [ ] At least as fast