Chery pick merge of branch 'feature/is_callable'
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.
See merge request !151 (merged)