BUG: Fix performance regression for PyObject_Get/SetItem

Also restructures the calling conventions a little to channel
all calls through the general functions, this will add a little
overhead and could be streamlined if necessary.

--

The performance regression was because I must have removed the item assignment speciallization. This should at least mostly fix the regression shown by http://yarikoptic.github.io/numpy-vbench/vb_vb_random.html#vb-random-shuffle100000