Partial math function support in in the hemi:: namespace and some tests

Added a tests folder for the math function support. There's a failing assert on the device for double-precision round() (internal function), at least for the case of 0^1 = 0. 

Everything's defined as a inline function and should be usable just as their std:: counterparts. It also selects the single-precision versions when the input arguments are floats. We could probably improve on this behavior, but it'd probably need a global flipped in the hemi namespace or something similar. 

I've tested it with CUDA 6 and g++ 4.8. 
template<...> indented at same level as the function prototype that follows it.