rewrote the range printing to something more generic: it now accepts anything that models the range concept (containers, c-style arrays, boost.array or iterator pairs).