Add implementation of std::is_callable
This is proposed for C++17 and helpful to checking correctness of predicates supplied to algorithms. This also commes with a test that checks is the behaviour is correct, especially with respect to various combinations of r-values, r-value references, and l-value-references.