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.
Merge remote-tracking branch 'origin/quda-0.7' into gpu_comms_debug
Modified some of the macros used in the staggered dslash to be slightly more
transparent. Added an EXTERIOR_KERNEL_ALL member to enum KernelType, although
it isn't yet used.
Corrected the definition of surfaceCB to include the factor of 1/2 in the x-dimension for color-spinor fields.  This fixes a bug with GPU_COMMS when partitioning in the x dimension.
Added the fused staggered dslash kernel and supporting functions
and structures. Still need to add the DslashPolicyImp instance
to access this kernel.
Added support for fused dslash for staggered quarks. Getting a runtime error, however.
Fixed GPU_COMMS dslash communication when using a strided communicator for the t dimension.  Ghost pointers now correctly computed in cudaColorSpinorField::create and not erroneously computed in ColorSpinorField::create.
Fixed typo in cuda_color_spinor_field.cu.
Fused staggered exterior dslash routine seems to work.
Needed to update the aux array in fillAux, fix double buffering
in cudaColorSpinorField::scatter and circumvent an initialization bug
in DslashPolicyImp::operator()(...)
Modified the Dslash functors so that the input spinor is
passed as an argument.
Removed spurious commit
Merge remote-tracking branch 'origin/gpu_comms_debug' into gpu_comms_debug
Removed spurious dslashCuda2 call in dslash_clover.cu.
All dslash types now use DslashPolicy class.  Added new DslashNC policy to cater for 4-d domain-wall and mobius dslash types.
Updated texture reference path of dslash_textures.h to use public getter functions instead of direct member access (fixes compilation on pre-Kepler architectures introduced when dslash build process was parallelized over multiple files).