Prevent computations in float16 in scalar and elemwise

Also add a bunch of tests
this already exist in tensor/basic.py