fix database setup with paster

paster just scans the source code for a "websetup.py". Due to our
compatibility module for the old "mediacore" namespace it actually
finds two modules (mediadrop.websetup and mediacore.websetup) and
tries to run both which causes unwanted effects (e.g. duplicate
metadata initialization).
prevent javascript exception in media admin interface on save when the server JSON response contains unknown fields
better SQL query to inject a player into the database (one DB query less)
add convenience method "db_needs_upgrade()" to AlembicMigrator
fix running "paster setup-app" for MediaDrop instances which never used SQLAlchemy migrate
Plugins can now ship a "db_default.py" module with an "add_default_data()" function
to modify the database in case the plugin does not have any db state stored.

MediaDrop will assume that after successfully executing the method the
db schema/contents will be the same as if the latest alembic migration script was
executed.

To enable this functionality plugins must also have alembic migrations set up
(even if they don't have any revisions). Each plugin should be prepared for DB
migrations if they introduce custom structures.

This setup is better than listing to events because it integrates with the
alembic flow: MediaDrop will create a migration table and stamp it with the
currently highest revsion automatically. Even the case of "no migrations but default
data" is handled.
MediaDrop now also checks on startup if the DB schema is current for all plugins
extract MediaDrop init code from LoadAppCommand into a stand-alone function so it can be reused by various plugins
fail fast in "init_mediadrop()" if config file does not exist
prepare debugging statements for DB connection leakage check in the middleware
add a template variable "display_search" to hide the search field in the top navigation bar
can now set "locale_dirs" in MediaDropPlugin constructor
rename internal constant "MEDIACORE" in .lib.i18n to "MEDIADROP"
MediaDrop now supports custom translations per instance which overrule the default translations shipped with the source code.

If you place a "<domain>.mo" file in <env_dir>/i18n/<domain>/LC_MESSAGES
translations from that file will be merged with MediaDrop's default
translations. This mechanism works also for plugins.

This commit also introduces the "env_dir" even though it is a bit kludgy
currently. The env dir is essentially the "data" directory which contains
subfolders for media, images, appearances etc. Currently it's implicitely
defined as parent folder of the "media" directory but later on I plan
to make this configurable explicitely (config options to set "media_dir",
"cache_dir", "image_dir" and "deleted_files_dir" will be deprecated at
that point).
plugin links in settings admin now support Pylon's LazyString for menu entries
generate correct slug for media if no slug was provided in the form submission data
DBSanityCheckingMiddleware (pessimistic disconnect handling) should only listen for the MediaDrop pool and leave other SQLAlchemy pools untouched.
prevent WebOb DeprecationWarnings
hide podcast selector in media admin also if podcasts are disabled globally but there are still podcasts in the database
hide references to comments in the admin interface if MediaDrop comments are disabled (e.g. using Facebook comments)