Make Hash#[] function properly

This PR makes `Hash#[]` accept either nothing, a hash, an array, or an even-sized list of objects.

Besides, it exposes `space.convert_type` to ruby code via `Topaz::Type.convert_type` with the same signature.