add hemi submodule and begin porting

[hemi](https://github.com/harrism/hemi) provides some tools for writing code
that works on either GPU (parallel) or CPU (looping), plus some nice
boilerplate reduction like maintaining device pointer which helps readability.
port nll class to use hemi

now compiles on either cpu or gpu, per hemi portability magic, falling back to
g++ if CUDA_ROOT is not set. It still requires CUDA runtime headers.

also, since nvcc doesn't like C++11, reverted to C++03.
update docs to reflect hemi changes
Merge branch 'hemi'