Asynchronous download button for ORA2 responses

WIP finished collect_ora2_data management command, wired it to instructor dashboard UI, still needs to have logic factored out and exposed in instructor_analytics.basic

Remove extraneous print statement

Refactored sql querying logic into instructor.utils and wired the html button and management command to it there

Added comments to several methods

Added optional output_dir argument to collect_ora2_data management command and default behavior to write to stdout

Simplified code structure in management command and comments per jrbl's PR comments

Responded to jrbl's style comments, added test reference to check endpoint, and parameterized database name from django.conf.settings

Removed reference to django.conf.settings['DATABASE'] in favor of django's natural default

Removed extraneous import and whitespace per overlooked jrbl comment

Factored db connection logic into common/djangoapps/util/query.py

Whitespace changes

First stab at conversion to celery command from synchronous version

WIP Converted ora2 report to asynchronous/celery format, still needs integration with progress table and proper S3 key.

Implemented unit tests for instructor api, integrated ora2 celery job with pending tasks table, and cleaned up code for pylint

Removed extraneously included file from commits

Added more unit tests and reformatted whitespace

Fixed PEP8 violations, replaced pylint disable codes with string representations, and improved brittle unit test

Reformatted long string and removed extraneous redirect from javascript
Merge pull request #157 from Stanford-Online/dylanrhodes/ora2_celery_button

Celery-ized button for downloading ORA2 responses via the instructor data download dashboard.
Fix overriding analytics css and simplify logic
Merge pull request #168 from Stanford-Online/kluo/fix-inline-analytics-css

Fix accidentally overriding analytics css
Fix for randomization data returned from analytics API

  The issue this fixes is when the question is not currently set to randomization
  but was set at some time in its history.

  This is handled by now displaying an error message for this situation.

  Also, added are 2 data integrity checks:
    - radio question: num data rows <= num choices
    - checkbox question: num data rows <= 2**(num choices)