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 is where a usage example would really help understanding the specific implementation.
Otherwise the logic does not seem to me clear by just looking at the doc (u.e. without looking at the code).
Perhaps it's me, but I was able to understand how to use this and in general what's going on only starting from client code in v4.