Bugfix in Compare Experiments

Find Probes module as used in Compare Experiments was not fully
initialized with _dbHelper. Renamed form.js to Util.js. Changes in
documentation.
Doc change

Removed two TODO items.
Prevent unnecessary warnings when database is down

Also no need to open a Help page in a new window. Change copy text in
About and Help pages.
One bugfix plus small changes

Fixed: In Compare Experiments, when the same experiment was compared to
itself using two different P-values, previously would get an error
message. This is no longer so. Added: added a P-value label (simply a
number at this point) to the experiment heading in the TFS breakdown
table. Added paragraph to the About page. Added more text to the Sign
Up page. Removed: will not show plain flag sum (with no decimal part)
in CSV report.
Added link to schema PDF to About page

Also moved the PDF from sql/ to images/ directory and deleted
doc/.htaccess since doc/ directory is not visible to Apache under
current configuration anyway.
Added even more About info

Also added links to Github pages.
Now using Exception::Class throughout User.pm

Also reverted to using latin-1 (ISO-8859-1) instead of utf-8 for forms
since deciding to leave MySQL encoding at latin-1.
Changes to Session::User, SGX::Profile

The biggest improvement: user is not created at the registration time
anymore. Instead, the user is set up during the first email
confirmation cycle. This now means that we cannot have self-created
users without (confirmed) emails (unless they were created by the
administrator). This also means that the mail server (Sendmail,
Postfix) must always be up for new users to be able to register
themselves. TODO: the very same behavior should be expanded to
verifyEmail; to be done in the next commit.
Refactoring

(1) In all Strategy::Base-derived classes, stopped using new()
constructor for initialization of most attributes. Trying to reserve
the use of early-stage initialization for behaviors like restoring
session (which can be overridden). This involved moving code from new()
constructors into init() method for all Manage* classes. (2) Improved
error-handling code in the initialization-context code that grabs a
database handle. (3) Change error-prone code in Strategy::CRUD which
could process user-inputted text values incorrectly under some
conditions. (4) Moved DropDownData from inside of Profile module into
Model::DropDownData. (5) Since nearly every descendant of
Strategy::Base uses JSEmitter module, moved JSEmitter-related attribute
from Strategy::CRUD to Strategy::Base.
Version bump

v0.4.2.1
Bugfix

Fixing an error which arose because, although the new() constructor in
Strategy::Base-derived classes, was meant to create essentially a
singleton, it was called twice during the construction of Compare
Experiments (which invoked new() constructor in Find Probes…).
Refactored some initialization code

Removed the need to set up an additional constructor in order to
prevent certain behaviors in the default constructor. Achieved this
gathering configuration options that were spread out among all
parameters to the default constructor under config => {} attribute,
which then allowed to pass additional non-configuration parameters to
the constructor.
Some changes in how exceptions are handled

Also attempting to restore session in Strategy::Base->new only if
session variable is defined.
Different behavior of Change Email code

Instead of changing email address as soon as the Change Email form is
submitted, now doing this only after the link in the email message has
been clicked, similar to how it is done when a user registers for the
first time.
More refactoring

Now SELECT statements generated on the fly in Session::User; more
extensive use of the exception mechanism.
SGX::Exception::Internal::Duplicate exceptions can now have custom
fields for data records and number of rows returned.
User registration notifications finally do what they say

Administrators finally do receive emails when new users register. Also
fixed a pernicious bug where project name was treated as valid when it
wasn't an empty string while a more correct check would be to see if
it's a decimal number.