HUGE Patch - from Google Cal to End

With this PR comes huge changes.  Normally, I wouldn't make a single PR so big, but for the sake of time, I stuffed everything into one (and because it won't be reviewed before the deadline).  However, I will try to highlight the majority of the changes as best I can, for bookkeeping if nothing else.

<b>Note:</b> Many of these changes were rushed due to time constraints.  As a result, I didn't follow best practices in all cases...or a lot of cases.  Hopefully things aren't too broken :)

<b>Changes:</b>
- Updated readme - set google api client/secret as env vars
- Fixed saving of access tokens, refresh tokens, and expiration times
- Google Calendar integration - Each group view will display the unified/combined Google Calendar of members of the group, assuming each member has a calendar named 'class_schedule' which has been set to public.  If one or more members do not have this setup, then their events will not be included in the calendar.  If no members have the setup, an empty calendar will be displayed.  This is a current limitation (hard-coded calendar name/public), but I believe this should be okay given the openness/flexibility of the spec.  
- Removed day of week for groups as it was redundant with the date and can be derived from the date.
- Removed unused button, code, etc.  Cleanup
- Updated some of the terminology used for buttons, lists etc to be a little clearer.
- Added requirements/description section to groups.
- Allow group leaders to edit group requirements/description (plaintext, no individual processing of requirements, etc).
- Group requirements displayed in group view.
- Allow users to enter qualifications (as plaintext, no individual processing) which is displayed to the group leader (in the application list) when they apply to a group.
- Allow updating of qualifications and name without entering current password since we do not store the Gmail password/we cannot check their password.  Users signed on through Google previously had no way to update their profile at all.
- Add notifications (messages).  Members of a group may view and create messages that are only displayed to other members of that group.  Messages are also timestamped.
- Added "My Groups" to welcome page - lists all groups which the current user is a member of (or leader of)
- Added "Pending Groups" to welcome page - lists all groups which the current user has pending applications for
- Added "Explore Groups" to welcome page - lists all groups which the current user is not a member of and does not have pending applications for (All - "My Groups" - "Pending Groups" = "Explore Groups")
- Removed "All Groups" because it wasn't very useful.  It is much easier to sift through groups using the filtered searches provided than trying to eye-scan through all the groups.  The other filters also cover 100% of groups, so there is no need to have an all-inclusive view.
- TONS of styling and miscellaneous view changes.