API refactoring for bulk reports

Now uses exception handling instead of callbacks; changed error
code to 403 (the Sinatra not_found error handler was overwriting
responses when returning 404, and it's probably a better fit anyway.)
Consistency changes and test fixes for bulk API queries
Merge branch 'master' of github.com:flpjck/flapjack into 123_bulk_api_reports
Merge branch 'master' of github.com:flpjck/flapjack into 123_bulk_api_reports
keep bulk API branch up to date with #197
update submodule pointer
Merge branch 'master' of github.com:flpjck/flapjack into 123_bulk_api_reports
Merge branch 'master' of github.com:flpjck/flapjack into 123_bulk_api_reports
support the old non-bulk routes for report data
change bulk query param format, so flapjack-diner's tests will work OK with it
API deletion of maintenance periods, more bulkifying
add missing require
Merge branch 'master' of github.com:flpjck/flapjack into 123_bulk_api_reports
fix failing test
show previously alerted state, summary, duration of current state in email
bugfix
cleanup
change last update in web pages to use relative_time_ago
refresh cached contact instance vars properly on change
Merge pull request #168 from ali-graham/123_bulk_api_reports

Bulk data API functions