move the native objects into their own files and adjust the names somewhat to better match the names of the runtime classes
there is no reason to manually unbox native types anymore, we can use the unboxTo* methods
rename the unboxTo* methods to better reflect the scala types they are being unboxed to
making the NativeHash always use a mutable HashMap
Merge branch 'master' into native-objects-breakout