Isolated detection into its own object

Isolated tag detection into its own object along with all related objects: corner refinement, quad finding, bit reading and decoding (though this also exists in `Chilitags`).

This makes `Chilitags::find()` much lighter and detection/tracking distinction much more visible. This will in turn make life much easier when separating them into different threads, and also when making detection concurrent in the future.

This is a purely refactoring PR, does not change the API or performance.