Experiments and evaluation of options for parameter::bind() overloads
Fix parameter binding index calculation
Implement parameter::bind() with several templates

The templates are enabled selectively with std::enable_if<>
which allows for different versions of bind depending on the
used parameter. So std::string is passed by reference and can
take an options `copy` parameter.

Additionally, due to enabling the templates only for certain types,
normal overloading can often be used, without specifying template
parameters. If, on the other hand, ambiguity occurs, if can be
resolved by explicitly specifying the type as a template parameter.

This is more flexible and easier to use than previous implementations
of bind(), and also leads to better error messages in case of misuse.