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>
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.
activities reports: remove stray bracket characters

Not displayed, but they show up as errors in the HTML5 validator.
settings module: fix typo in html boolean attribute
themes/default/login.php: fix stray closing tag

Main container gets closed in parts/_footer, so we need to leave it open.

That makes login.php identical to index.php.
Rather than wrangling with the indentation for this pecularity myself,
I just copied index.php verbatim.  So for now, at least they're consistent.
Fix missing/stray/mismatched html tags

Detected using HTML5 validator.
profiler: cellspacing="0" is invalid and we don't need it

html5.validator.nu: The cellspacing attribute on the table element is
                    obsolete. Use CSS instead.

http://stackoverflow.com/questions/339923/how-to-set-cellpadding-cellspacing-in-csshttp://stackoverflow.com/questions/339923/how-to-set-cellpadding-cellspacing-in-css/3209434#3209434

bootstrap.css already used the technique described on stackoverflow
to ensure 0 cell spacing as a default for all tables.
That's good, because none of the other tables generated
by the profiler were using cellspacing="0".

Although, the profiler can also be shown in the front-end.
So we'd better add the CSS in profiler_template anyway,
to be on the safe side.

Sanity-tested by overlaying before/after screenshots of the affected table.
roles settings: fix permission matrix clickable headers

Detected by HTML5 validator.
(cellIndex is not a valid HTML attribute).

We were also setting it to the wrong values,
so clicking on the header affected the wrong column.

Since we're using jquery .eq() to select the cells in the table column,
let's use jquery .index() to determine the index of our column.
install: fix nested <p> tags in error messages

Stop CodeIgniter adding extra tags around form validation messages
(copied from Authenticated_Controller).
Fix invalid table markup

One duplicate <tfoot>.  Mismatches in the number of columns
(which actually show up as small glitches in the table borders,
at least in Firefox).

This leaves some garbage in the profiler that happens to be an invalid
table - it's a bug in CodeIgniter.  It's fixed upstream - note that they've
also changed the type of markup generated - someone will have to change the
profiler template anyway, and hopefully we'll get valid markup out of it.
Merge branch 'develop' into valid-2-validity-v2

Conflicts:
	install/controllers/install.php
Added assertEmpty() and assertNotEmpty() methods.
activity cleanup table: fix number of columns in the $empty_table case
Added Function get_key()

Allow to retrieve table's primary key attribute name
Ability to get result in array.

Added parameter to choose the return type, either Object or Array.
Merge branch 'develop' into valid-2-validity-v2

So it can be merged automatically by GitHub

Conflicts:
	bonfire/application/core_modules/roles/assets/js/settings.js
	bonfire/application/helpers/application_helper.php
gravatar_link(): fix invalid empty id attribute - again :)

branch modulebuilder-fixes fixed it.

develop tried to fix it, but failed, and was then merged into
modulebuilder-fixes.

Use the code from develop (which does the same for the class attribute),
but make sure it actually works now.
Fix new missing/stray/mismatched html tags

Detected using HTML5 validator.