Refactor the sequence interface

Refactoring:

* factor-out duplicate code to separate method _get_slice_bounds()
* replace 4 if-clauses with one call to slice.indices()
  * issue #6 is still not solved because __len__() is still broken (#11)

Change behavior to be more sane:

* raise error if step != 1
  * this was silently ignored before

Change behavior to be closer to Python indexing:

* if start > stop (assuming step==1), an empty array is returned
  * before, the two values were flipped
* if negative values exceed length, they are set to maximum
  * something strange happened before ...