render_filter_first_letter(): escape '&' in anchor hrefs

'&' needs to be escaped as '&amp;' in html.
user module: escape '&' in anchor hrefs
translate module: remember to encode & in html
logs module: htmlspecialchars() escaping of log entries

HTML5 validator noticed the un-escaped PHP guard code.
Skip the PHP code from the log file.  And remember to escape
the rest of the log, heh.
translate editor: remember to html-escape the form values

Detected by HTML5 Validator.
user module: mailto uris don't start with slashes

w3c-validator:

Bad value mailto://alan.christopher.jenkins@gmail.com for attribute href on element a: PROHIBITED_COMPONENT_PRESENT in authority component.

mailto://alan.christopher.jenkins@gmail.com">alan.christopher.jenkins@gmail.com</a>
user login: remove blank label (confuses Orca Screen Reader)

This was already omitted in themes/default/parts/modal_login.php.

Blank label doesn't contribute to text, layout
(it's a float in the margin of a normal block),
or anything else.  Blank elements are generally deprecated.

On the negative side, the blank label confuses Orca Screen Reader,
which reads "Remember me for two weeks" twice.

I've filed it on the GNOME bugzilla as well, but a11y is generally
lacking love.  So we shouldn't go out of our way to confuse
people who have reading disabilities.
Remove empty label elements

Many reference non-existent ids, which shows up in conformance checkers.
Some have inconsistent identation in the source code.

Likely some will confuse screen readers like Orca,
and there's just no reason for them.
(See previous commit message).
Fix missing ids referred to by form labels

w3c-validator points out:
  "The for attribute of the label element must refer to a form control."

Specifically, the _id_ of a form control.  The _name_ doesn't count :).
timezone_menu() needs an id so the control can be labelled

We're using <label for="timezones">, so we need
id="timezones" on the form control.

flagged up by w3c-validator:
  The for attribute of the label element must refer to a form control.
  <label class="control-label" for="timezones">Timezone</label>
roles module: associate dangling label with the correct form control

Tested using the Orca Screen Reader in Firefox (Ubuntu 12.04).
gravatar_link(): don't generate invalid empty id attributes
ui settings: remove duplicate ids (they weren't used)

id="shortcut2" (and so on) showed up twice.
It wasn't referenced by html, css, or js, so just get rid of it.
ui settings: remove duplicate class attribute

class="button" and class="btn" on the same element.
.button isn't styled now anyway, so just remove it.
Remove <div class="inputs-list> (previous version of bootstrap)

'Up to v1.4, Bootstrap required extra markup around checkboxes and
radios to stack them. Now, it's a simple matter of repeating the
<label class="checkbox"> that wraps the <input type="checkbox">'

http://twitter.github.com/bootstrap/base-css.html
fix three labels supposed to be associated with groups of radio-/checkboxes

(Reminder: <label for="can_delete"> targets the element with _id_
"can_delete", not all the form elements with a _name_ of "can_delete").

Replacing the label with <legend> (and the enclosing div with <fieldset>)
would be better for older screen-readers (nested fieldsets are perfectly
legal), but bootstrap's CSS doesn't support that usage.

Fall back to WAI-ARIA.  Tested with Orca Screen Reader.  Both e.g.
"Removable?" and "Yes" are read, but only after disabling CSS -
reported as Orca bug <https://bugzilla.gnome.org/show_bug.cgi?id=680249>.

Disclaimers
 - Screen readers will still miss the longer help-inline when tabbing
   through the form.

 - The behaviour differs from <label for="x"> used in the rest of the form
   in that this label is not clickable.  Par for the course IMO, but
   someone could smooth it over in JS if they like.

 - modulebuilder is still generating (invalid) labels like this
user login: remove gratuitous tabindex

These were already
 - focusable elements
 - focused in the same order given by the explicit tabindexes

so the explicit tabindexes just make for maintenance headaches.

"The tabindex attribute was created to allow web developers
to customize the tab order of web content. Most of the time,
tabindex is not necessary. It should only be used in cases
where the default tab order is not ideal and when the tab
order cannot be changed by rearranging items in the content
and/or by altering the style sheet to reflect the best visual
arrangement. These cases are rare. In almost all circumstances,
WebAIM recommends against using tabindex."

-- http://webaim.org/techniques/keyboard/tabindex
activities report: fix form controls with no associated label

 - mark up the label text for <select> by wrapping both together
   in a <label>

 - bootstrap <select> defaults to block, so this change would alter the
   design (for the worse).  Use .form-inline to keep everything on
   one line.  Doing this the right way pays dividends: as a side effect,
   this improves the vertical alignment of the <select> with the label
   text.
activities report: use keyboard-accessible <button>s
user settings: fix missing label on "user meta" dropdown fields