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`