internal/router: support for efficient include retrieval

We drop the ItemGetter logic - it was more indirect
and inefficient than necessary - and introduce the
notion of a BulkIncludeHandler which knows how
to group itself with other like-minded handlers
to make a single shared request.

This has the nice side effect that the RegisterCollection
magic is no longer needed, and the shared request
can be anything we like. The router no longer needs
mgo as a dependency.
This code here is nice but very dense.
It would be nice to add some comments, e.g. about the difference between the handler key and the include keys, and why we use g[0] for each group to collect all the results.