Support non-collection routes in ApiApplication

Currently, we assume all routes are either collection routes or the `/health/` route.
Would be keen to have this as unicode now. Just thinking about how best to get ``elem_id`` to be bytes again. Maybe the element handler should just override ``prepare`` and do ``self.elem_id = elem_id.encode('utf-8')`` after calling ``super``? Doesn't seem great but I don't have a better idea right now.