Fix #196; Increase offset correctly

If a ListerAt implementation chooses to return fewer than MaxFileList
entries, the next offset it increased by MaxFileList in any case and so
we get unwanted results.  Instead, increase the offset by the correct
number as returned by ListAt.
diff --git a/request.go b/request.go
index 906e9ce..e6bdf13 100644
--- a/request.go
+++ b/request.go
@@ -72,13 +72,18 @@
 	return request
 }
 
-// Returns current offset for file list, and sets next offset
-func (r Request) lsNext(offset int64) (current int64) {
+// Returns current offset for file list
+func (r Request) lsNext() int64 {
 	r.stateLock.RLock()
 	defer r.stateLock.RUnlock()
-	current = r.state.lsoffset
+	return r.state.lsoffset
+}
+
+// Increases next offset
+func (r Request) lsInc(offset int64) {
+	r.stateLock.RLock()
+	defer r.stateLock.RUnlock()
 	r.state.lsoffset = r.state.lsoffset + offset
-	return current
 }
 
 // manage file read/write state
@@ -245,9 +250,10 @@
 		r.setFileState(lister)
 	}
 
-	offset := r.lsNext(MaxFilelist)
+	offset := r.lsNext()
 	finfo := make([]os.FileInfo, MaxFilelist)
 	n, err := lister.ListAt(finfo, offset)
+	r.lsInc(int64(n))
 	// ignore EOF as we only return it when there are no results
 	if err != nil && err != io.EOF {
 		return nil, err