Separate kernel-dependent/tree-independent state out of wrangler (#29)
* Register pytest markers * Expansion wranglers: do not store trees * Remove (unrealized) Wrangler.tree_dependent_info doc * Add sumpy downstream CI * Fix test failures for tree/wrangler refactor * Create fmm.py * More justification for TraversalAndWrangler design * Placate flake8 * Back out ill-fated TraversalAndWrangler, introduce TreeIndependentDataForWrangler, introduce boxtree.{timing,constant_one} * Fix pylint/flake8 for tree-indep data for wrangler * Update the may-hold-tree comment in the wrangler docstring * Fix incorrect merge of drive_fmm docstring * Remove *zeros methods from wrangler interface * Tweak sumpy downstream to use appropriate branch * Fix downstream Github CI script * Fix downstream CI script syntax * Refactor so that FMMLibTreeIndependentDataForWrangler knows kernel but not Helmholtz k * Adjust downstream pytential CI for wrangler-refactor branch * Add template_ary arg to finalize_potentials * Add {multipole,local}_expansions_view to wrangler interface