[bug 987801] peep-ify requirements

* creates a requirements.txt file with all the things that are in
  vendor/
* tweak fjord/manage.py so that it adds the vagrant virtualenv to
  sys.path if it's there and if not, adds vendor/ to site packages;
  this isn't a super great solution, but it's probably a good enough
  interim one while we're switching from one way of doing things to
  another
* changes vagrant_provision.sh to build a virtual environment--this
  speeds ./manage.py stuff up significantly
* adds sha checksums to compiled.txt requirements file
[bug 987801] Exit if requirements are mismatched

This adds some code that gets run via ./manage.py which will cause it to
exit if the dependencies specified in the requirements file don't match
what's installed in the virtual environment.

It can't effectively check requirements specified by github tarball url.
For those, it puts them in another list and then tells you how many it
can't check. Going forward, we should reduce the number of these because
we can't do a lot about them.

It lets you quell the check with SKIP_CHECK=1.
[bug 987801] Redo how we figure out whether to use vendor/

This adds a line so that it automatically activates the virtual
environment when you do "vagrant ssh". This makes "./manage.py" work
fine as well as the code for determining whether requirements are
mismatched.

This changes fjord/manage.py such that it (ab)uses the fact we're in
vagrant and know wehre the virutal environment is to figure out whether
to enable the vendor/ stuff or not. This is just a stopgap until we
remove vendor/ altogether.
Merge pull request #326 from willkg/987801-peepify-phase1

[bug 987801] peep-ify requirements
Fix sampledata generation to use bulk create

This fixes sample data generation to use bulk create which is a lot
faster and skips all the post_save processing.
[bug 1041622] Capture querystring slop

If someone passes additional querystring parameters to the generic
feedback form, capture that in the feedback_responsecontext table.
Smoketest cleanup

Since it's now unlikely that QA will ever use this code, I reorganized
the files so it's closer to how Input is structured:

* got rid of desktop/ intermediary directory--we don't really
  differentiate between desktop and mobile
* changed FeedbackPage to DashboardPage which is a more proper name for
  it
* nixed BasePage--that was supposedly the dashboard page, but it was
  goofypants so it needed to be shown the door
* tweaked some code to function better and faster

Generally, this is cosmetic in the sense that it doesn't affect what
we're testing and how we're testing it--it's just code organization and
some speed improvements. Went from 160s to about 120s runtime.
[bug 1021155] Add basic FirefoxOS smoketest

This is a basic FirefoxOS smoketest to make sure we can post and that
at least some of the information is making it.

This adds a bunch of FIXME items for additional tests we could/should
add to have parity with the generic form smoketest.
[bug 1041664] Capture slop in Input API

This captures any extra post data parameters from an Input API post into
the feedback_responsecontext table with some restrictions.
Fix issue on stage

pip isn't installed on our servers, so importing it dies. This moves the
import so it doesn't run in server environments.
Show context in response view
[bug 1045942] Add category to response table

This adds a "category" field to the response table and also the Input
API. Products can use this field for bucketing responses into topical
groups for easier analysis.
Add docs for category and extra context for Input API
Add an additional note about keys
[bug 998726] Quell Django warnings
Rename fjord/manage.py to fjord/manage_utils.py

There were two things named manage.py and that filename has special
meaning in Django projects. I renamed this manage.py to manage_utils.py
to nix the confusion plus possible import confusion.
Update dennis to v0.4.3

This picks up a couple of new rules and fixes a warning rule that wasn't
working right.
Remove puppet scripts; add scripts/ directory

* We don't use puppet for vagrant, so we can remove all these puppet
  things.
* Add scripts/ directory. Going to start putting runscripts in here.
[bug 1047681] Fix mlt call to be more resilient

Previously, if the MLT call failed for a response, we would kick up an
HTTP 500 error and not show the response. That wouldn't be a big deal
except it turns out there are a myriad of reasons it could fail.

This makes that code more resilient. If it fails, we'll display a very
ugly looking error instead of failing completely. This makes that view
usable when ES is down as well as if the response hasn't been indexed
(rabbitmq down, ES down, reindexing the site, ...).
[bug 948954] Redo index admin

* adds reindex command (different from "delete-and-reindex" command)
* adds list of outstanding tasks to top of page
* moves record history to bottom of page