Fix Class#new to call allocate and Hash#initialize

Class#new never used to call .allocate directly, so this commit fixes
that to allow for custom .allocate behaviour. This fix allows us to also
move the logic from Hash.new into Hash#initialize.