Prevent computations in float16 in scalar and elemwise

Also add a bunch of tests
I think at some point, negative nout meant that they could be computed inplace. However, that has been removed since.