Collate story metadata for status

This patch extends teh story entity with summary metadata from the
 tasks table, so we can show different status counts for each story
 as well as an aggregate status derived from those tasks. This is the
 first of two steps to improve the UX on the story list page, by creating
 a 'resource' with usable properties we can filter on. For example,
 the UI by default will only select stories with a status of 'active', to show
 stories that need to be worked on.

 Explicit list of items done:
 - Created new 'virtual' resource called StorySummary that joins two
 tables and provides extra useful data for UI display and filtering.
 - Ensured that StorySummary is a left-join, so that stories with no
 active tasks still show up (though they'll have null task counts and be
 flagged as 'invalid')
 - Removed 'is_active' (soft-delete) from stories, as the 'active'-ness
 of a story is now derived from its tasks.
 - Switched the DELETE action over to hard-delete with only admin
 access.
 - Updated stories DB API to use new model and properly attach
 subqueries.
 - Confirmed that project filtering and paging still functions.

Change-Id: Ia2b71195eff081cc5b51f8398402dc00130d43db
Merge "Collate story metadata for status"