In stat and upload handlers, return empty lists instead of null.

Fixes camlistore.org/issue/326
Add integration test for Android camput environment.

Fixes camlistore.org/issue/323

Change-Id: Iefa5b073aa6d6b00899e7e17afb3bcf2f18ad6b3
Merge branch 'master' of https://camlistore.googlesource.com/camlistore
Add jstests.go, a unit test harness for JavaScript files.

Change-Id: I3d755f0001c0528f5db2dbe8cdfc10fa60443c89
Merge "Add jstests.go, a unit test harness for JavaScript files."
pkg/client: better error handling propogation.

Convert non-200 HTTP responses into proper error objects returned to
caller.

Change-Id: Ib04fb8cf2e04d8ae85908233adc5f9e5f7b32d01
third_party/fuse: remove verbose xattr logging

Change-Id: I620cf6829e6059196f2368392d8882227dd7edbb
fs: logging cleanup

Change-Id: I9413ce5397453cb91c9293de4dd7dce62f79ccfe
fs: memoize roots children

If we ever return a particular value for a root, we should continue to
return the same value to provide a consistent view.

camlistore.org/issue/324

Change-Id: I7cfad02ad742b0e70e333f70779d64ba163d68a6
fs: implement {mutFile,mutDir}.Access

On at least OS X, the stat(2) call will use an existing node without
issuing Lookup.  This introduces a filesystem inconsistency where a
delete removes an entry for further requests, but FUSE's cached access
of the node is still used for at least stat.

There's a call to Access directly against the node as retrieved from a
prior Lookup.  By invalidating the nodes when they're deleted and
verifying this at Access time, we keep things more consistent.

This isn't exactly camlistore.org/issue/324 as described, but it was
causing one of the tests to fail on OS X

Change-Id: Ib90a1de79d6d3960f96bac5b4fb448c952c4ba66
Reuse memoized roots on refresh

This is somewhat related to camlistore.org/issue/328

Change-Id: I6bf8d70a42fca886f6b004d65c346be7c0a3e61e
pkg/client: fix method to find a server in the config

http://camlistore.org/issue/325

Change-Id: I4aa6d5103848b73ed169ab7d7de3a60a33723b79
Convert some spaces to tabs.

Change-Id: I2aadb495326665544bcabf90299cad8d70b08eee
Merge "pkg/client: fix method to find a server in the config"
Merge "Convert some spaces to tabs."
Convert the rest of the files in server/camlistore/ui to tabs.

Change-Id: I80fdb25b831c8ea9e780d9e104716c6756f0661c
Use the "cam" prefix for all camlistore JavaScript identifiers.

Change-Id: Ia3d375abf4a4568ab0e83997e900a9d2aeae66c4
Make the order of require() calls consistent.

Change-Id: If9180032d4ff6c49647613e67044ea078e0638a2
Don't do pushState() navigation on middle click

Change-Id: I549c5a49a3e68384162d919b412c809dcf0fa774
Fix the weird flicker on mouseover of thumbnails.

The effect you were seeing was a difference between hardware and
software compositing paths.

Chrome was promoting the content area to a hardware-accelerated
layer during animation, but dropping it back to software after the
animation was complete. There were little animations for the
checkmarks that were causing us to flip in and out of hardware mode
as you moused around.

Solution: force us to stay in hardware mode the entire time the
nav is open (translate: scale3d() is a well-known way to do this).

Bonus: the scaled text rendering looks better in hardware mode.

BUG: https://code.google.com/p/camlistore/issues/detail?id=284

Change-Id: I62f6c86d1ae12ba043f34c0659633bb5195dc50c