Prevent computations in float16 in scalar and elemwise

Also add a bunch of tests
Why this? For inputs -1 mean a variable number of inputs. I don't understand what negative number for nout mean.