operator overloading + interface consistent with TH (add/mul/div, blas calls) + torch.{xxx} dispatcher aware of cuda

This PR is a little big and needed a couple of commits (or else it would be a giant blob).
What it brings to the table:
- Operator overloading, i.e. a + b, a-b a/b a*b works for cuda tensors
- add/mul/div functions have been made consistent with the torch7 API (and the TH API)
- addmm, addmv, addr have been made consistent with their TH/T7 counterparts
- added mm,mv,ger for CudaTensor
- torch.xxx now works with CudaTensors as inputs.

All unit tests in cutorch pass (except the max which was failing before too).

Since this is a little big PR, can I have a couple of eyes on this please?
@andresy @clementfarabet @jonathantompson @nicholas-leonard @dominikgrewe @akfidjeland 

Thank you.