User activity by day and month

Early review of direction, here's the approach:

* Refactor user activity to build a common table that shows which users performed which categories of action on each day in each course
* Generate downstream aggregates from the common table
* Introduce a calendar table (which can later be extended to include complex things like fiscal year/quarter stuff)

If this approach looks good I'll write a bunch of unit tests for the calendar table, and increase the coverage of the user activity computation.

@brianhw @rocha
In the code that I have used (and worked before) if you are using 30 days months, you the delta is 30 days. There is no ambiguity there. Another pattern I have seen is that date operations that are not normal, use a prefix as in "business_day", "end_of_financial_month" etc.

The omission from "months" in `datetime` is more an indicator of the deficiencies of the library, than of the ambiguity in defining a month. Any other time related library that I know (`dateutil`, `arrows`, `quantlib`, `pandas`, etc) does not have that problem.

It is very easy to mess up with date calculations (not in this case however) and I normally use libraries when dealing with them.