Prevent computations in float16 in scalar and elemwise

Also add a bunch of tests
why to you need getattr everywhere? Is't it always there? Or sometimes they can be python object?