Support non-collection routes in ApiApplication

Currently, we assume all routes are either collection routes or the `/health/` route.
`collections.Counter` seems to be significantly faster, since it only goes through the array once. I'm not sure if the performance increase is needed though.

> timeit.timeit('set([i for i, v in Counter(a).items() if v > 1])', setup='import random\nfrom collections import Counter\na = [random.randint(0, 100) for _ in xrange(1000)]', number=100)

0.04768514633178711

> timeit.timeit('set([v for v in a if a.count(v) > 1])', setup='import random\na = [random.randint(0, 100) for _ in xrange(1000)]', number=100)

1.200334072113037