Allow partial explicit template arguments for call operators

1) Allow partial explicit template arguments for call operators
We want to be able to allow:
  - auto L = []<int ... Ns> ( int_pack<Ns ... > ip )  0;
    L.operator()<1, 2>(int_pack<1, 2, 3, 4>{}); // note extension
    - the fix includes preventing the retention of the expansion pattern, when we are substituting Deduced template arguments in
       - TransformTemplateArgument
       - TransformFunctionTypeParams
      by checking the active instantiation for whether we are in DeducedTemplateArgumentSubstitution Mode, because it never makes sense to retain the expansion pattern, when, during the finalization of argument deduction, we are simply substituting deduced arguments - no further arguments can be deduced.

2) Fix a bug in emission of diagnostics, where during inconsistent pack deduction, since the packs are converted to strings - and the 'diff' modifer can not deal with strings - we introduce a new diagnostic format string for packs that does not use the diff modifier

3) Add some test for explicit template argument specification for variadics

4) Add a fv_print.h file that allows type safe printing - wrapping around printf