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.
minor fixes for review
internal/router: add some more comments
Merge pull request #39 from rogpeppe/014-bulkinclude

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.
Merge branch 'v4' of https://github.com/juju/charmstore into v4-actions

Conflicts:
	internal/v4/api.go
Merge pull request #43 from rogpeppe/016-bulk-include-comments

internal/router: add some more comments

As suggested by frankban in https://github.com/juju/charmstore/pull/39.

I started trying to add some sort of example to the FieldIncludeHandler
doc comment, but didn't do very well, so fell back to just pointing
to the best example we have.
Merge branch 'v4' of https://github.com/juju/charmstore into v4-actions
* new version of charm actions implementation