Add CompilerDetector to capability module
Filling out CUDA backend, modularizing some components.

* Don't need to set "cuda.h" and "cuda_runtime.h" headers in the .cu files because nvcc takes care of this for us.
* Added "cuda_runtime.h" to boost headers, this is necessary with our currently predefined utility functions.
  TODO: Decide how we should handle this being default or not.
* Reuse the original ASPBackend's boost module and toolchain when constructing CudaBackend to reduce overhead.
* Added an add_cflags(flags) function, takes in an arbitrarlily long list of strings that will be added as flags.

* Updated asp_module use the CudaBackend constructor.
* Moving some classes out of asp_module.py to make the code more modular.  Allows for code reuse without running into circular imports.
* SpecializedFunction and HelperFunction moved to specialized_functinon.py
  TODO: Decide where this should reside
* ASPBackend moved to platform/ASPBackend.py
  TODO: Decide on naming scheme.
Moving add_cflags to ASPBackend.

* Seems like this function could be reused over many backends.
* TODO: Decide on an interface, currently accepts a variable number of arguments.
Moving cflags out of constructor for CudaBackend.
Adding add_to_init and add_variant_func methods to backends.
* Prevents need to check the current backend to perform actions, let the backends handle this themselves.
Adding TODO: Move all of this logic to the backends
Let the Cudabackend compile itself, remove unecessary conditional.
Updating comments, fixing typo
Fixing bug in tree_grammer.py syntax definition
Merge pull request #1 from chick/version1-leonard

Some CUDA backend refactoring, typo fix in yacc.py