Initial file parallelization of all the dslash operators.  Not yet working in multi-gpu.
Merge branch 'quda-0.7' into build_parallel_dslash
Multi-gpu dslash now building for all dslash types.
Removed need for spinor and clover stride constants -  now members of DslashParam and PackParam structs.  Fixed bug when calling commDim in dslash_pack.cu.  Multi-GPU dslash should now work (not yet fully tested).
Staggered dslash test defaults to improved staggered (QUDA_ASQTAD_DSLASH), instead of incorrectly defaulting to Wilson.
Fixed warning message regarding conflict between LatticeField::gather and ColorSpinorField::gather.
Pack commDim now set through an interface function setPackComms() for increased robustness.
Clover stride should only be set when clover field pointers are non-zero.
Removed legacy initSpinorConstants and initCloverConstants functions.
dimFromFaceIndex param struct should be passed by reference.
Only build copyClover if GPU_CLOVER_DIRAC is defined.
Worked around staggered dslashParam scoping issue, and some small clean up.
face_num and face_idx computation in packing kernels moved into if-else block to avoid register spilling.
Fixed bug in pack kernel tuning: added missing metadata such that different commDim values lead to distinct tuneKey values.
Merge branch 'build_parallel_dslash' into quda-0.7
Placed the pthread-related structures and functions inside an anonymous
namespace to prevent a "multiple definition" compilation error.
default version of the magma library set to 1.5.x, added default constructor to MagmaArgs class, refined code for the incremental eigcg solver
Added configure options --enable-gauge-tools amd --enable-contract, for enabling the auxilary gauge tools (plaquette, extended gauge routines, APE smearing, gauge update, gauge phase) and bilinear contractions.  Both these default to disabled to aid compilation when building QUDA as just a solver library, though gauge-tools are enabled if force or fat-link options are enabled.
Set use_sloppy_partial_accumulator=0 by default to favour stability.  Also max_res_increase=1 by default to a tolerate a single reliable residual increase since this is usually enough for a working half precision CG solver.
Added a QudaDslashPolicy enum to enumerate the various Dslash implementations.
For example, QUDA_FACE_BUFFER_DSLASH, QUDA_PTHREADS_DSLASH, QUDA_DSLASH2.
Have added a DslashPolicyImp abstract base class, with derived classes that
implement Dslash with FaceBuffer, the default DslashCuda2, DslashCuda2 with Pthreads
and DslashCuda2 with GPU_COMMS. I have also added the class DslashFactory with a static
"create" method, which creates an instance of a derived functor depending on the value
of QudaDslashPolicy it receives at runtime. Have tested this for wilson and clover fermions
and performance seems fine. Will extend this to the other quark types after further testing.

Next step is to incorporate Dslash with fused exterior kernels as a runtime option.