(bug 5103) Pass final redirect destination into feed token generator
(Bug 5135) Add image resizing (first pass)

This adds the ability to specify sizing in a URL. We will then
dynamically resize the image before returning it to the user. Files are
stored in MogileFS and in a new media_versions table.

This first pass is in-process and doesn't use Gearman, although that
should be implemented before this seriously gets some use.
(Bug 5137) Add basic support for new API

This adds register_api_endpoint functionality to the router and some
basic functions in an API controller.
(Bug 5138) Add media properties

This creates media_prop_list, populates some properties into it, and
updates the LJ::load_props method to use modern error reporting (Carp)
and database handle usage.
(Bug 5073) Basic foundation/SCSS set up

Bring in the ability for us to use the Foundation CSS template.

This adds compass compilation to our build process.

This varies the HTML we generate depending on if we're in Foundation
mode or not to fix the logged out forms.
(Bug 4715) Media upload form

Image upload form.

This also merges the generate id and upload step.

This adds the code that parses image uploads via multipart attachment.
This also wires the controller to the backend, which allows the frontend
to actually upload files!

There's also one sneaky bit of property related code that does nothing
so far.

Also, removes a convenience method in DW::Request which overrode the
official getter/setter.

Also make sure that we return a JSON error message if not logged in.

This submits the metadata via JS:

* submit when the user says to submit
* resubmit, if needed, after all uploads are finished
* tweak styling of the upload form slightly -- don't hardcode colors
* use classes instead of an id
Flatten DW::Request methods

This promotes some methods from the Standard and Apache2 modules up to
the Base class, which allows us to share some more functionality and
moves us closer to a world where we can deprecate the Apache2 module.

This also removes the mutual exclusivity that did exist on post_args and
content. Now since post_args depends on content, you can call both if
you really really want to. Not recommended.

This also adds a "json" method which returns a parsed JSON object if and
only if the request is a POST request and has the proper content-type.

Content-type is now enforced for post_args as well.

This also makes did_post stricter, as the RFC specifies all-caps for the
POST method. I doubt this will cause a problem.
Make the submit button in /file/new use foundation's button styling
Get celerity roughly working
Various tweaks and cleanup, fix colors

* add /dev/kitchensink to preview the foundation files
* set the default to not include the CSS when including files (we
  usually only care about mixins)
* remove page-specific css / components. start with a clean slate, add
  on when needed
* adjust variables
Remove foundation from //file/list

Foundation demo is at /file/new and /dev/kitchensink
Move foundation to ljlib.pl instead of per-siteskin

Also remove lj_base-app.css and lj_base.css from the foundation pages
Fix navigation colors in celerity
Tweak appearance of the site skin search form in foundation
(Bug 5138) Add property method for Media

This adds a "prop" method which lets you add/change/delete properties
for a given media object. Properties are always set on the media ID and
shared among versions.
Send to the API as JSON instead of as form fields
Create a new progress-bars css file

And include it in /file/new
Extend .button from .submit

Move it to the global skin file so it inherits the skin colors, and so
that it doesn't need to be included on a per-page basis
Reduce visibility of progress bar while in progress

Change the color when it's succeeded
Add a success message once the descriptions have been saved

For peace of mind