Added advanced slice() behavior (allowed passing only start offset and negative offsets relative to the end of data).