renamed MediaWords::DBI::Controversies to MediaWords::CM (better matches the naming used in other parts)
"create controversy" button, form, controller action and helper subroutine in the model
show the status of the initial SearchStories Gearman job if no such job has been finished
make dashboards "public" or "private"; show only public dashboards in the "create controversy" page
change the <select> of media sets IDs to checkbox group to:
* include a short description of each dashboard in the same page (not a popup)
* enable multiple selections without pressing Ctrl + Command
check the "create controversy" form values correctly
Merge branch 'master' into cm_create_controversy
Merge branch 'master' into cm_create_controversy
Merge branch 'master' into cm_create_controversy
Merge branch 'master' into cm_create_controversy
Merge branch 'master' into cm_create_controversy

Conflicts:
	sql_migrations/mediawords-4430-4431.sql
Merge branch 'master' into cm_create_controversy
Merge branch 'master' into cm_create_controversy

Conflicts:
	lib/MediaWords/Controller/Admin/CM.pm
Merge branch 'master' into cm_create_controversy
Gearman README formatting, word wrap
Start an independent, PostgreSQL-backed instance of Gearman on "localhost:4731"
Add initial Gearman-based extractor module:

* Add MediaWords::DBI::Downloads::extract_and_vector() subroutine with self-contained "extract or store the error in database" code
* Add MediaWords::GearmanFunction::ExtractAndVector Gearman worker to be used for local and Gearman-based extractions
* Move "mediawords_extract_and_vector.pl" to "mediawords_extract_and_vector_locally.pl" to specify what the script is doing
* Add "mediawords_enqueue_unextracted_downloads_on_gearman.pl" helper script
Merge branch 'master' into gearman_extractor
Require Gearman::JobScheduler 0.12 which supports unify_logs()
Write a single Gearman extractor log because there are a lot of extraction jobs so it's impractical to log each job into a separate file