Merge remote branch 'tom/gsoc-doc' into trunk
Merge remote branch 'tom/is_squarefree' into trunk
make is_squarefree an fmpz_poly method; slightly simplify it
document fmpq_poly_reverse
Start design document.
more design work
Improve build system for cxx module.

In particular:

(Makefile.in) Autogenerate targets check-XYZ for each build dir XYZ.
(Makefile.subdirs) Allow C++ tests, add new pattern rule to compule them.

Also, add empty/dummy files cxx.h, cxx/dummy.c and cxx/test/t-cxx-compiler.cpp.
Another build system tweak.
Start another cxx prototype.

(flint.h) Add additional cast to please cxx compiler in pedantic mode.
traits for signed/unsigned int initialization
first addition
two-sided op, unoptimized
test generated code
move mp to separate header
move trais to separate header
move tuple to separate header
implement and test tuple merging
start testing codegen for tuple
Make empty_tuple its own type.

empty_tuple used to be tuple<void, void>. There is no benefit to that. In fact,
this has caused me some (slightly) hard to detect errors. Having this as its
own type breaks nothing, and will be more resilient in the future.
remove check-XXX targets