Update how farray indices work

Negative indices now work like this:

 +----+----+----+----+
 | a3 | a4 | a5 | a6 |
 +----+----+----+----+
 3    4    5    6    7
-4   -3   -2   -1

This better matches Python's slicing rules.

Also, fixed a bug with zero-sized slices.
For example, X[5:5], X[6:5], X[6:4], X[7:], etc
should all return an empty farray([]).
Fixup farray docs about negative indices