Miscellaneous improvements

- Add support for empty tuples (a.k.a. unit, a.k.a. `()`) in anticipation of eventually switching to true type-level lists.
- Improve the `Show` instance of `N` by producing actual Haskell code, as encouraged by `Show`'s documentation.
- Add derived `Bounded` and `Ix` instances for `N`.

(Ignore the stuff about pattern-matching in the commit message; I was confused.)