Move applicator to its own hpp and add some specific tests (compilation only).

Improve applicator to use perfect forwarding.
Allow non-const containers to be passed to apply.

Strictly differentiate apply from map by allowing the former to alter the data in the container.