better error message when exchange fails

closes #2441
fix test
update test to detect another bug
fix `payin()` to flag which participants we actually have card holds for
fix minor bug in `update_stats()`
Let's put the populate-balanced.py script in git
fix `UPDATE` query in `prepare()`
failing tests for `NoResultFound()`
get rid of `NoResultFound()`
Update branch.py to work with a cache
rename SQL tables `pay_*` → `payday_*`
replace `DROP TABLE IF EXISTS` by `ON COMMIT DROP`
create simplate to receive callbacks from Balanced

fixes #1811
add first test for balanced-callbacks.spt
disable CSRF check for `/balanced-callbacks`
fix `csrf.inbound` hook

The `except KeyError:` block was never executed since we were using `.get()`, which doesn't raise `KeyError` but returns `None` instead.
test that a CSRF token isn't required
add another test