Make Hash.new() and hash() accept the same typed parameters as .hash()

Spectests ok except for t/spec/S04-statement-parsing/hash.t test 6+7

Please note that according to S04:1639 and S06:3298, tests 6+7 are
actually wrong.  They just happen to be right for the previous implementation
of hash().