Add wrap_array
Rearrange the collections interface

- establish a shared COLLECTIONS interface for pretty printing
  collections

- Two implementations of COLLECTIONS:
  - HorizOrVertical: strictly horizontal or vertical layout
  - Wrapped: wrapped layout