add function_arg_ret_type

This little trait in utility is able to deduce the
type of the return and of the arguments of a callable object
(a struct, a lambda)
provided that its operator() is not overloaded.
(or it simply does not make sense, it is ambiguous).
det_manip: update

- make it a value, with move semantics :  add move construction, =
- add automatic deduction of argument and return type of the function.
  The concept of the function used in det_manip is therefore simpler :
  simply a callable object (a struct, a lambda), with the only requirement
  that its operator() is not overloaded (otherwise it would not make sense
  to deduce the argument type !).
- add some comment
- remove boost::wrap : just copy the function.

- still to do : put back high level direct lapack call,
  after the discussion on matmul and co...
  CHANGE have been highlighted in the class for that.

	modified:   ../det_manip/det_manip.hpp