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.