Change Formo form/group templates to be more flexible.
Previously (consistent with Gallery 3.0.x):
- forms were expected to have either only groups or only non-groups (excepting hidden).
- groups were expected to have only non-groups.
Now (compatible with Gallery 3.0.x, but allows more possibilities):
- forms and groups render hidden things first, non-group things next (in a <ul>),
then groups (which make their own <fieldset>).
- forms can now have a mix of group and non-group elements.
- groups can now have sub-groups inside of them.
Add note to Purifier to explain why we don't care about special cookie attrs.
Change indentation in Formo templates to make them more readable.
Change Formo field template labels to be more strictly compliant.
The <label> "for" attribute should be related to the input id (CSS id), not the
input name ($_POST field), although most browsers are smart enough to figure out
what you mean in either case.  Still, since we don't always give our input
fields ids, we shouldn't rely on this (as it isn't strictly compliant).
Instead, use implicit assignment as <label>Label<input ...></label>.
Overload Response::send_file() to handle base64 encoding.
- add the function, which loads the base64-encoded file into the body.
- revise Hook_Rest_Data to use the new function.
- revise File_Proxy to follow the formatting of above (no functional changes).
Update Formo to include our newest patch (allows named callbacks).
Big rewrite of Reauthenticate controller, which now looks a lot like Login.
- add Auth::reauthenticate() analogous to Auth::login()
- revise Auth::validate_too_many_failed_logins() so we can use it with both.
- revise Login controller to reflect above.
- tweak reauthenticate view to make variable names more consistent.
- add comments at top of Login and Reauthenticate to discuss similarities/diffs.