My import of picasa was failing because the number of photos
returned by the API was different (by one) than the number of
photos claimed in the top-level NumPhotos attribute.

Instead of relying in the NumPhotos attribute, just keep
requesting until we get a response with nothing in it.

This is also more robust against the (admitted edge-case of
the album contents changing while the importer is running.

Change-Id: Id928a6526e2805aa64e2e59828e2575235bcf9b9
server/ui: do checkType before conf.Validate

Change-Id: I9167cad044ecd2539925ec83f2be519e2b07d0aa
Merge "My import of picasa was failing because the number of photos returned by the API was different (by one) than the number of photos claimed in the top-level NumPhotos attribute."
Hide contents view on empty permanodes.

Otherwise, we end up showing a stupid empty contents view for every
tweet, foursquare checkin, etc.

This has the downside that when you remove the last item from a
set, the contents view goes away.

Change-Id: If5f53a713aaff63d9fb294b675a5e55ca452eff1
devcam: set CAMLI_CACHE_DIR

This change makes osutil.CacheDir return a different value with devcam,
allowing us to have a different location for cached blobs from the one
used in "prod" mode.

Change-Id: I58a88627515ff41cd2be72928d020f4c14736235
Add a link in the piggy drop down to importers UI

Change-Id: I4a2ba7127822e85f086ff4155c079a74ee31fae6
Merge "devcam: set CAMLI_CACHE_DIR"
website: allow HTML in camli errors. use website for client error.

http://camlistore.org/issue/276

Change-Id: I16f139fe2b6f1200250db668fa415ae42ff2c171
Merge "website: allow HTML in camli errors. use website for client error."
A+C: add Fabian Wickborn (Individual CLA)

Change-Id: I22be01c78d3e2fbef116e588f9613f679f77b324