Fixes #280. Correctly record top level entity size
Use DBMS-level increment ops to atomically update resource sizes
Correctly propagate size changes when an item is moved
Correctly propagate size changes when a folder is moved
Merge remote-tracking branch 'origin/master' into record-root-node-size
Reorganize folder move logic

We now only perform the expensive recursive size calculation
in the case that the folder is being moved under a different
root, which will probably be fairly rare.
Add test for size recording correctness

Also implement behavior of updating entire subtree when a
folder is being moved to a different root.
Add validation to ensure tree state cannot be corrupted

This means disallowing trying to move a folder underneath its
own subtree, which would orphan the subtree.
Use reusable utility method for atomic db-level field increments
Make isAncestor private
Use better names in _isAncestor
Merge pull request #326 from girder/record-root-node-size

Record root node size