operator[] support, the right way

Fully supporting `operator[]` by having a stronger proxy type which performs overload resolution ranking among other tricks to make sure users can use `lua["foo"]( bar )` and other neat tricks for natural and consistent access to the lua state.