numeric algorithm adjacent_difference

`std::plus` isn't a concept. It's a function object that gives a name to a purely syntactic construct: `+`. I have no beef with the function objects. But concepts are more than just syntax. They are syntax and semantics. Take addition. The mathematical notion of addition usually is commutative and associative, there is usually a zero element over which addition is identity. Those are addition's *axioms*. Also, things you can add you can usually subtract. Grouping those operations into some other concept is probably more meaningful. What does `Subtractable` above *mean*? That `a-b` compiles? That's not terribly interesting. Sometimes it's the best we can do, but we should avoid meaningless, purely syntactic concepts when we can help it.