Simplify counter implementation
- use
apply
anddetected
- prefer tag dispatch over template specialization
- fix InnerType <-> Arithmetic swap
- prefer boost::algortihm::icontains
- remove redundant constructor calls
- remove redundant copy c'tor and assignment declaration