translate: cleanup to not use input->get() and input->post() together

It seems to work fine, but it's surprising to see forms submitted to
urls which have query strings in them.  Let's replace the query string
parameters with normal CodeIgniter parameters.

This means the parameter can't be handled in shared code in the
constructor.  But it was only shared by two methods, and the real
common code was limited to a single line.  Moving code into index()
allows duplication to be reduced, so there's an overall reduction in
lines of code.

This also removes several & characters which had not been correctly
escaped for HTML.
translate editor: remember to html-escape the form values

Detected by HTML5 Validator.
logs module: html-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.
Escape '&' in anchor hrefs

'&' needs to be escaped as '&amp;' in html.
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