curried_fn_n: Fix overload ambiguity with clang.

clang could not tell whether curried_fn_n should use the currying or
calling version of its operator(). Add a requirement for the number of
arguments to equal F's arity in order to enable calling.

Signed-off-by: Scott Prager <splinterofchaos@gmail.com>
Improve calling conventions for `curry<N>(f)`.

Overload `curried_fn_n<F,N>::operator()` and
`partial_application<F,Arg>::operator()` for `const &` and `&&`
versions to remove warning when building with clang, and for consistency
with the rest of the library.

Signed-off-by: Scott Prager <splinterofchaos@gmail.com>
Merge branch 'curry'. (Fix clang compilation.)