Better iterable strings

1. Fixes the `string` of `Range` and `SizedRange`’s `.by()` and `.iterator()` to surround the outer string with parentheses, as discussed on IRC
2. Adds strings to many internal `Iterable`s
3. Changes `Singleton` as discussed on IRC to
  1. add `string` to `.iterator()`
  2. change `string` so that it doesn’t look like a tuple

I see no problems with 1. 2 and 3.1 might possibly carry a slight performance penalty. 3.2 could be considered a matter of taste.

WDYT?