Initial support for funding-goals-over-time; #141

TODO:
 * Tests
 * Migration of current `goal` field to goals table entry for each user
 * Removing the `goal` column from participant
Merge remote-tracking branch 'origin/master' into funding-goals-over-time
Moved goal amount setting to SQLAlchemy

This is in part b/c the tests are failing when trying to set the goal
attribute of a participant. Setting that attribute now uses the current
db.session and adds a row to the goals table.
The goals.amount should *default* to NULL

Previously it was NOT NULL. That was not right at all.
`goal` is no longer an argument to Participant

It's a descriptor that handles getting the latest value from Postgres
and adding new rows when the goal changes.
Merge branch 'master' into pr/745

Conflicts:
	schema.sql
Add explicit ON UPDATE CASCADE
Fix no-op typo; #141
Fix tiny format derp; #141
Merge branch 'master' into goals
Prune errant import
Working on migrations for goals
Merge branch 'master' into goals
Reimplement #141 using a Postgres rule

Postgres has a feature called "rules," where we can rewrite queries
based on certain conditions. I've decided to implement #141 using a
rule. Starting with the example here:

  http://www.postgresql.org/docs/9.1/static/rules-update.html

this commit adds a rule to log changes to the participant.goal column to
a separate `goals` table. This means that we can keep the simplicity of
reading and writing that value as we've always done, *and* we can have a
detailed log of changes to drive more advanced visualizations.

Huzzah! :D
Clean up Goal model a bit; #141

The Goal model is only needed right now by the test suite, and there
only to ensure that the database is torn down properly. I'm actually a
little nervous having this object around, because the `goals` table
should be considered immutable. Harumph.
Move migration into a transaction; #141

This dodges a race condition where we could fail to log some goal
changes.
Move new SQL to branch.sql; #141

Let's try out this pattern: feature branches should collect new SQL
statements in a branch.sql file, and if this exists we'll apply it
during makedb.sh. That should avoid some conflicts when merging from
master out to feature branches, as well as making it clearer that
branch.sql is a work in progress.
Merge branch 'goals'