CLC-3921 Initial implementation of Class Calendar bCal export tool. Does not yet support updates or deletes.

Squashed commit of the following:

commit 07be39082f08a7c678154e1801dafede38752bb9
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Fri Jul 11 09:44:16 2014 -0700

    CLC-3921 Rename tables and consolidate migrations

commit 33367e1e7c60129004f4429fbb476937713e1364
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Thu Jul 10 15:52:56 2014 -0700

    CLC-3921 Record export job identifiers

commit 27a80654f37f5985cae09465c1c3a82fe23ed6a8
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Thu Jul 10 12:42:43 2014 -0700

    CLC-3921 Rough draft of calendar rake task

commit 639190ec187144f8340f35e9f863aa55097a5223
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Thu Jul 10 10:13:50 2014 -0700

    CLC-3921 Don't create any entries if the user whitelist is empty

commit ed88b10918cd4e8de81ddb950546063edbfe75df
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Thu Jul 10 09:59:35 2014 -0700

    CLC-3921 Ignore exporter spec for now

commit 3b54403581bb14da63d4059c5325410c37aabfda
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Thu Jul 10 09:53:26 2014 -0700

    CLC-3921 Fix failing test by adding 12pm exception

commit 2f4c1e8cddd2abf33c9050c2e457fdf57803b90c
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Thu Jul 10 07:50:20 2014 -0700

    CLC-3921 Add some comments and log to debug the failing test

commit 1053bb1ae510df9abcd0fcc44e9b62fcd434759a
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Wed Jul 9 17:19:39 2014 -0700

    CLC-3921 Fix test description

commit 4ccc6c11f37894ab3ab00208d31268f889a1624b
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Wed Jul 9 17:18:40 2014 -0700

    CLC-3921 Refactor ScheduleTranslator to use instance vars

commit edc7099be02fb5bf6543e40f98ebedfa7ca1d1ff
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Wed Jul 9 16:35:32 2014 -0700

    CLC-3921 Make test pass in testext

commit 2f7630a4ea12df73158409069a997c71b4815075
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Wed Jul 9 16:24:27 2014 -0700

    CLC-3921 Figure out end time of class based on Oracle schedule

commit b0bf01191e29c1b6c55ceb603a554d30f39e7053
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Wed Jul 9 16:03:42 2014 -0700

    CLC-3921 Figure out first meeting date and time based on Oracle schedule

commit 1007367340fd3915f4ca3925fe99c5bdd40dee0e
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Tue Jul 8 16:34:01 2014 -0700

    CLC-3921 Split rrule conversion out into ScheduleTranslator class

commit 7da4c41255dccd9c23c88bfa99fecb3ccf54b9b0
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Tue Jul 8 15:50:11 2014 -0700

    CLC-3921 Add timezone to start times so that RRULE will work on Google

commit 8eb2c341a5985a2b3bd88d41a5d103661b7fdc97
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Tue Jul 8 15:19:11 2014 -0700

    CLC-3921 Correctly fill in recurrence rule's UNTIL field

commit e7fa3dcf2a5ece542a925b6d2c85b81df823bab1
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Tue Jul 8 14:27:09 2014 -0700

    CLC-3921 Limit attendees list to whitelisted users in course, and use their alternate emails if available

commit d663b97da05919424900d29e5fe2c61ae73372d3
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Tue Jul 8 07:12:15 2014 -0700

    CLC-3921 Use icalendar gem to generate recurrence rules for schedules

commit 1350deef80f1318b0ccd32a24f48af96fb9f8d8e
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Mon Jul 7 14:24:41 2014 -0700

    CLC-3921 Make preprocessor emit start and end dateTime based on terms

commit 61b10c50f264df329d3f9fc2d23db81a16b39178
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Mon Jul 7 11:23:44 2014 -0700

    CLC-3921 Tweak spec

commit a28a01c6d23ad425b5f194f2b22d75980fb46e08
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Mon Jul 7 11:22:40 2014 -0700

    CLC-3921 Add meat to preprocessor spec assertions

commit 8d8103e70628921d402d1122c65cd76b48f5eaa5
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Mon Jul 7 10:42:53 2014 -0700

    CLC-3921 Handle multi_entry_cd field from class schedules

commit e82b5c7433d10038805bee5fe8409508f6276c19
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Mon Jul 7 09:48:19 2014 -0700

    CLC-3921 Remove debug print

commit 3931291438387a2404cd41afdff3705845324ea4
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Mon Jul 7 09:48:01 2014 -0700

    CLC-3921 Fix failing transcript test assertions

commit 78e4d7a977f0862b4159e95b287f34b6fef7fe60
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Mon Jun 30 16:01:29 2014 -0700

    CLC-3921 more TODOs

commit e86d757bdb35205db73a9ce7f15b7c2da814ba01
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Mon Jun 30 15:06:00 2014 -0700

    CLC-3921 Add TODOs

commit 76be0b65583a29cd8d396f7adce317864505a4da
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Mon Jun 30 14:26:13 2014 -0700

    CLC-3921 Separate export and preprocess tasks

commit 3bb93ccdd6147759d29c2af95e1288e5ce49b8fa
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Fri Jun 27 16:54:52 2014 -0700

    CLC-3921 Talk to Google in a rudimentary way

commit 84184975f869101a8138b22a5103a9e2d1408624
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Fri Jun 27 15:54:58 2014 -0700

    CLC-3921 Add rudiments of class schedule

commit c46dbb1181b930391f6125692263c1708c2ba580
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Fri Jun 27 13:57:06 2014 -0700

    CLC-3921 Fix another failing test

commit 4d5b277c27f5d3fd760adbe99078f9e9da36805c
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Fri Jun 27 13:44:14 2014 -0700

    CLC-3921 Fix failing test

commit e5b8bcc8d48404d48179fdd8ef67666c59d2e1fd
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Fri Jun 27 13:17:06 2014 -0700

    CLC-3921 Add the calendar user whitelist

commit 135d80501c2038a65821390db4a70a269d7b2464
Author: Chris Tweney <chris@media.berkeley.edu>
Date:   Fri Jun 27 10:08:24 2014 -0700

    CLC-3921 Rudimentary Calendar preprocessor and query classes, plus db tables
CLC-3921 Small changes per code review
Merge pull request #2697 from ctweney/clc-3921-squash

CLC-3921 Initial implementation of Class Calendar bCal export tool.