Start of ability to have plugins provide static resources!

Note I have not tested any of this yet ;)  But we're already on our way:
 - We've got docs
 - The hook is there

Lots to do still though.  But, progress! :)

This commit sponsored by Laura Arjona Reina.  Thanks larjona!
Work towards getting plugin static linking/serving to work

 - add link_plugin_assets.  For now, incorrectly running from
   ./bin/gmg theme assetlink... uh, will fix ;)
 - Update paste and config_spec.ini configs to handle the locations
   and serving of the plugins' static resources

This commit sponsored by Marko Dimjašević.  Thank you!
Oh right, actually mount /plugin_static/ :)
Document assetlink and staticdirect usage for plugins.

Still a bit to clean up around what the command to be run actually is,
since that will likely change.

This commit sponsored by David Decker.  Thank you!
Moving test_user_dev->user_dev in plugin app configs & adding plugin static serving

The test_user_dev (as opposed to user_dev) was a legacy before we had
each application running in its own directory (as they now do in
pytest).  Move that name to just user_dev... this is more consistent
with the rest of our naming and will make writing these config files
easier.  (If we want to test that changing these still works, that
should be a separate unit test with special config files.)

Additionally, add plugin static serving to the common test paste
config file.

This commit sponsored by Juan Jose Marin Martinez.  Thank you!
Various fixes to plugin assetlinking command.

Actually trying to run the command helps figure out what needs to be
fixed :)

This commit sponsored by Justin Nichol.  Thank you!
Simple "staticstuff" plugin for writing unit tests on plugin static asset linking.

It doesn't do much... it just has a static directory with a "bunnify"
CSS file and has a unit test that returns a json encoded set of a
staticdirect with both this plugin enabled and also
with (theoretically) a file distributed with MediaGoblin (it isn't
really, but in our case that doesn't matter.)

Also set up the static_setup hook / PluginStatic object for this
plugin; testing that with `./bin/gmg theme assetlink` seemed to work.
(And argh, need to update that command name, I know.)

This commit sponsored by Bradley Kuhn.  Thanks bkuhn!
test_plugin_staticdirect now works and passes.

This commit sponsored by Samuel Vale.  Thank you!
Generalize "gmg theme assetlink" -> "gmg assetlink" and cover both theme and plugins

We've moved the module... probably I'll re-add theme just to give a
warning that this is deprecated.

This commit sponsored by Kevin Williams.  Thank you!
docstring update: link theme... and plugins!
Cleaning a bit: os.path.sep.join -> os.path.join
Full unit test for the plugin assetlink command.

Tests:
 - if the link doesn't exist yet
 - if the link already exists
 - if it is a symlink to something else
 - if it exists but is not a symlink

This commit sponsored by Lon Koenig.  Thank you!
Documentation changes to reflect new plugin assetlink stuff

 - updated old theme assetlink section to reflect new location of
   ./bin/gmg assetlink and removed comment about the plugin command
   being temporary.
 - Added a new section to the standard config file on where to put the
   plugin_static section
 - Added release notes about said section

This commit sponsored by Thomas Webber.  Thanks, Dad!
Cleaned up EXIF view

The last update made the assumption that EXIF metadata is in some way
consistent between camera models, images, manufacturers. This update
takes into account that nothing is certain whenever EXIF is involved.
Moving statcdirect automodule doc reference to autoclass per Elrond's suggestion.

Cleaner!
moved normalize_user_or_email_field to auth/tools.py from auth/forms.py
Improved docs

- Fixed an outdated URL
- Rewrote "Separate Celery" section
- Changed literal blocks to bash code-blocks
- Changed wording when referring to the MediaGoblin WSGI application
No more of this find_packages nonsense.

Explicitly declare mediagoblin as the only package.  find_packages has
caused messes in the past :)

This commit sponsored by Pedro Ângelo.  Thanks!
basic_auth v0 plugin working
reset mediagoblin.ini