std::trie: add fast internal iterators.

The external iterators have a significant amount of overhead---having to
maintain and index into a heap allocated stack---which means a simple
internal iterator can be much faster.

    bench_each_large          ... bench:     30907 ns/iter (+/- 3503)
    bench_iter_large          ... bench:     43187 ns/iter (+/- 3082)

    bench_each_small          ... bench:       333 ns/iter (+/- 170)
    bench_iter_small          ... bench:       618 ns/iter (+/- 288)

Despite being slower, the external iterators have their place: they are
significantly more composable.