Rework extended slicing for array objects, fixing a few bugs (like 'x[5:2] = y' working but 'x[5:2:1] = y' failing.) Optimize the common case of step-1 slicing. Also make extended slicing independent from simple slicing for easier removal of simple slicing in Py3K. Add tests for all extended slicing behaviour. (Backported from p3yk-noslice branch.)