Made Iterable more generic

Inheritors do not longer have to implement operator[] and the index does
not have to be a integer.

Note: Iterator has not yet been updated to match Iterables changed.