Update CUDA support: vector templates, ...

 - Update CUDA support:
  - `device_vector` templates.
  - Add generic modules to `cuda` module, _e.g., `count`, `sum`, etc._.
  - Add optional `allocator` keyword argument to
    `cythrust.DeviceDataFrame`.
   - If set to `cythrust.cuda.device_vector` _(`cythrust.cu_dv` is a
     shortcut)_, the device vectors of the data frame will be allocated
     on the GPU.
   - By default, it is set to `cythrust.device_vector`, which causes
     device vectors to be allocated on the host.
Add CUDA `--arch` paver option, add cycudart...

 - Add CUDA `--arch` option to the `build_device_vector_pyx` paver task.
  - This option is passed along to `nvcc` when compiling the Cython
    Thrust extensions for the CUDA back-end.
  - Usage:

        paver build_device_vector_pyx -a <sm_13,sm_20,...>

 - Add `cycudart`, which provides a `Device` class for checking the
   amount of available and free memory on a CUDA device.  This could
   potentially be used by the `DeviceDataFrame` class to issue
   warnings/exceptions when memory is running low, or there is
   insufficient memory to construct the provided arrays as device
   vectors.
Add `cycudart` compile rule to pavement file
Merge branch 'cuda'