Huge rewrite from dev branch.

Boxer is now even more standalone; separate repo?

Punch has been reformatted because of this, removing almost all type-checking et.c. that was needed for the tiny selector engine before.

:+1: