Shared backend

Can compile hello world, can compile patterns and tailrec methods. Can compile array operations. Can compile both classes and objects.
Backend in scalac(in as result in dotty) uses this to access raw names in several locations without creating intermediate string. I'm not sure if this is an optimization or an artifact of name encoding. 
I would better get all the tests passing both in scalac and dotty and then if something breaks if I try to change.