CLC-3339 Make ResearchHub part of live updates warming; adjust expiration on textbook & video proxies
CLC-3339 Tweak ResearchHub to be more in line with other models
CLC-3339 Fix failing UserCacheWarmer test
CLC-3322 Revisions to make Research more similar to other proxies
CLC-3199: Lecture drop-down width is now normal size
Merge pull request #2195 from NolanChan/CLC-3199

CLC-3199: Lecture drop-down width is now normal size
Merge pull request #2210 from ctweney/clc-3322

CLC-3322 Research Hub revisions for consistency
Added AppAlerts latest alert to the status feed for both authenticated and anonymous users. When there are no alerts in the calcentral-alerts/feed, the alert element will be absent

Tasks Included
- fixture: added the fake xml for the app alerts feature in public/dummy/app_alerts.xml
- config: added app_alerts_proxy settings to main config file including a feature flag, a 2 minute expiration time, a fake mode option, and an api url
- confing: turned on the app_alerts feature for development

Create AppAlertProxy:
- Format timestamps using DatedFeed
- Use get_latest method to get the most recent alert (cached as "user/global-alert/AppAlertsProxy" for 2 minutes)
- Use get method to get all messages (cache key: "user/global-alerts/AppAlertsProxy")
  !! This method isn't currently may never be used. Pending definitions.
- Include camelCaseless entry example in dummy/status.json:

    "alert": {
      "title": "CalCentral Scheduled Maintenance 3/17",
      "teaser": "CalCentral v32 release at 6 - 7am",
      "url": "http://ets-dev.berkeley.edu/calcentral-scheduled-maintenance-317",
      "timestamp": {
        "epoch": 1393495946,
        "date_time": "2014-02-27T02:12:26-08:00",
        "date_string": "2/27"
      }
    }

* At the momement, the AppAlertyProxy raises no specific exceptions.  It simply rescues them and logs them as errors. Result for AppAlertProxy.get_latest are either nil present.

? Question: I'm unsure if we can rely on the feed to keep returning mutliple items in descending order by <PostDate>.  If we can, then we don't have to sort, so I've kept that commented until I know the answer.

AppAlertsProxy: spec/lib/proxies/app_alerts_proxy_spec.rb
Added tests for AppAlertsProxy trying to cover
- failures
  - unfound fake feed
  - unfound real feed
  - parsing invalid xml
  - parsing unexpected xml
- sucesses
  - find multiple messages -> aap_instance.get
  - find latest message    -> aap_instance.get_latest
- cache writing

? Question: for @chris.  If I'm going to continue to shut up errors this way, I need to fix my tests that are not correctly detecting the messages writtent to the log files.

Added tests to UserApiController for including an alert (or not) in the status feed.