router: implement RelativeURLPath
Merge pull request #177 from rogpeppe/076-relative-url

router: implement RelativeURLPath

We can use this for generating correct relative URLs in pages that
we serve (we'll use it initially in the generated SVGs for bundles).

Also add some copyright notices that were needed.
Merge pull request #180 from urosj/v4

CS Search: Experimental boosting & name resolution
Allow ngrams in URL text.

This sorts out a number of search issues:
 * ngrams match in URLs
 * Bundle Tags are supported in search
 * Support for charms and bundles with revision 0
Merge pull request #182 from mhilton/search-url-ngrams

Allow ngrams in URL text.

This sorts out a number of search issues:
 * ngrams match in URLs
 * Bundle Tags are supported in search
 * Support for charms and bundles with revision 0
Only index latest charm version.

Use elasticsearch versioning to make sure that only
the latest version of the charm or bundle is indexed.
Therefore only returning the latest version in search
results.
Merge pull request #178 from mhilton/search-index-only-latest-version

Only index latest charm version.

Use elasticsearch versioning to make sure that only
the latest version of the charm or bundle is indexed.
Therefore only returning the latest version in search
results.
internal/v4: implement API endpoint for bundle diagram.svg
Merge pull request #183 from rogpeppe/074-bundle-svg

internal/v4: implement API endpoint for bundle diagram.svg

This requires some QA behind a real web server to
verify that the generated SVGs actually work!
internal/mongodoc: add Contents field to mongodoc.Entity

This will allow us to gain quick access to selected files
in an entity's archive such as README and icon.svg.
Merge pull request #184 from rogpeppe/077-zip-contents

internal/mongodoc: add Contents field to mongodoc.Entity

This will allow us to gain quick access to selected files
in an entity's archive such as README and icon.svg.

We'll actually use the field in an upcoming PR.
internal/charmstore: add ZipFileReader and NewZipFile
Merge pull request #185 from rogpeppe/078-open-zip-file

internal/charmstore: add ZipFileReader and NewZipFile

These are the methods we'll use to create the Content on entities.
internal/charmstore: add OpenCachedBlobFile method
Merge pull request #186 from rogpeppe/079-opencachedblobfile

internal/charmstore: add OpenCachedBlobFile method

This will be used to serve both icon.svg and README (and potentially other
similar endpoints in the future).

We also move serveDiagram into a new file, v4/content.go, without any
other changes to it, in preparation for the other new methods.
internal/v4: implement icon and readme endpoints
Merge pull request #187 from rogpeppe/080-icon-readme

internal/v4: implement icon and readme endpoints