BUG: length_of_indexer() can return incorrect values that break slice assignments.
BUG DESCRIPTION:
length_of_indexer() (defined in pandas/core/indexing.py) returns incorrect result
if (stop-start) is not divisible by step. As a consequence some slice assignments 
throw exceptions. Affected panda versions: 0.16.x, 0.15.x, current git master.

HOW TO REPRODUCE:

import pandas as pd
sr= pd.Series([-1]*6) # series with 6 elements indexed from 0 to 5.
sr[0::2]= [0,2,4] # setting even elements works fine!
sr[1::2]= [1,3,5] # setting odd elements results in error:

.../pandas/core/internals.pyc in setitem(self, indexer, value)
    568             if is_list_like(value) and l:
    569                 if len(value) != length_of_indexer(indexer, values):
--> 570                     raise ValueError("cannot set using a slice indexer with a "
    571                                      "different length than the value")
    572
ValueError: cannot set using a slice indexer with a different length than the value

BUG FIX: I fixed the bug (and created a new test case for it) in my private repo 
and will submit a pull request shortly.
