Compilation time regression due to boost::fusion

The boost::fusion uses a macro BOOST_FUSION_UNFUSED[_GENERIC]_MAX_ARITY which
determines the max number of arguments our operations can have. It defaults to
6, due to Jean's extension, we support up-to 7. I've noticed that the
compilation time is very sensitive to this setting, even if the current code
only uses arity < MAX_ARITY. I think we keep it best to 7 for now.

For the record (boost 1.40):

#define BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY 5
$ time make operation_test.cpp.o
[100%] Building CXX object
tests/CMakeFiles/operation_test.dir/operation_test.cpp.o

real 0m18.631s
user 0m18.040s
sys 0m0.490s

#define BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY 6
$ time make operation_test.cpp.o
[100%] Building CXX object
tests/CMakeFiles/operation_test.dir/operation_test.cpp.o

real 0m19.837s
user 0m19.270s
sys 0m0.580s

#define BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY 7
$ time make operation_test.cpp.o
[100%] Building CXX object
tests/CMakeFiles/operation_test.dir/operation_test.cpp.o

real 0m20.144s
user 0m19.410s
sys 0m0.670s

#define BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY 8
$ time make operation_test.cpp.o
[100%] Building CXX object
tests/CMakeFiles/operation_test.dir/operation_test.cpp.o

real 0m23.693s
user 0m23.080s
sys 0m0.600s

#define BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY 9
$ time make operation_test.cpp.o
[100%] Building CXX object
tests/CMakeFiles/operation_test.dir/operation_test.cpp.o

real 0m36.511s
user 0m35.770s
sys 0m0.690s

#define BOOST_FUSION_UNFUSED_GENERIC_MAX_ARITY 10
$ time make operation_test.cpp.o
[100%] Building CXX object
tests/CMakeFiles/operation_test.dir/operation_test.cpp.o

real 1m55.514s
user 1m54.140s
sys 0m0.920s

Yes, that's exponentially. *without* using any of that code. I double checked.

Peter