Fix the slice bug described in issue #55

The previous code was not taking into account that a developer can use
‘strange’ slice indexes, like [0:200] when a list has only [1,2,3].
Therefore,  there were some bounds that were not respected, like
limiting the “stop” argument to the maximum length of the list.

The previous code, for [1,2,3][1:200] would return [1,2,3,None……197x
None] .

This patch is based on the CPython code at
https://hg.python.org/cpython/file/3d4d52e47431/Objects/sliceobject.c#l1
32. The following answer at stackoverflow was also relevant for the
problem:
http://stackoverflow.com/questions/12173856/implementing-python-slice-no
tation?answertab=votes#tab-top

This patch only fixes issues related with retrieving items from a list.
There are still issues with slices for deleting and assignment, but
that will be handled later.