Membership Application, Payment, Misc. Fixes

Added existence testing to the API.  This is the only API call for which
an API key does not need to be provided, and is for use in registration
forms et cetera to perform client-side AJAX validation that a user is a
member in good standing.

Fixed a possible password hashing bug which would cause canonically
equivalent passwords to not compare equal due to a lack of
normalization.  Passwords are now placed in Normal Form Canonical
Composition before being hashed for storage or comparison (under both
the MD5 and bcrypt schemes).

User and Organization are not longer immutable.

The Save function on both the User and Organization classes may now be
used on items that don't have an id property.  This will result in a new
entry being created in the database (i.e. an INSERT as opposed to an
UPDATE).

Changed the query API to make it more general.  Rather than having
specific flags which change the type of query performed, it now accepts
a query as an argument.  Both the User and Organization classes have
methods which allow certain predefined queries to be retrieved or
generated.

Changed the query API so that non-paginated results may be retrieved.
Passing in null as the first two parameters to the GetPage function of
either the User or Organization class will now simply fetch all results.

Moved territorial unit-handling logic onto the ProvinceFormElement
class, so that it's not duplicated in form-handling controllers.

Moved POST detection login into a function in main.php so that it's not
duplicated in form-handling controllers.

User and organization listings will now default to displaying active
users/organizations only (rather than all users/organizations).

User and organization listings no longer have links in the UI for
non-administrative users (the controllers are still accessible by
entering the URL, however).

Added new error handling.  This error handling has e-mails that contain
details by default (even if DEBUG is false), better formatted e-mails,
and a customizable banner (so the MISA BC logo will be used on error
pages rather than the CivicInfo BC logo).

The Form class now creates an form with an id of "form", which will
allow other, differently-managed forms to be present on the same page
without JavaScript selecting the wrong one.

Added keyword search to the User and Organization classes.  This
functionality is exposed through the keyword.php controller (accessible
via the "keyword" route), however there is to form which exposes this
functionality in the UI yet.

login.css was finally removed.

Merged form-handling into one template.

There is now an administration page accessible only to administrative
users.

Added a membership application form, where prospective users can enter
their information and then be placed in a pending state awaiting
administrative approval.

Exposed administrative approval through a convenient UI.

Modified the templating engine so that it can now render a chain of
templates, rather than just one template.

Using the above functionality, broke several monolithic templates out
into smaller, more general templates.  This increased template reuse
substantially.

Started work on a payment form, which allows organization admins or
administrative users to pay for their own organization for any calendar
year which is not in the past and for which they have not paid.
Calendar years must be created by an administrative user before they may
be paid.

Administrative users are no longer barred from logging in if their
organization has not paid.

Organization admins may login if their organization has not paid, but
they will be "jailed" to the payment form.  All other areas of the site
will silently by rendered as this form.

In affecting the above, greatly simplified the login-handling code.

Added VISA/MasterCard/AMEX images.

The schema has been modified.  At Jason's request several fields have
been added/removed.  Added a settings table for the storage of system
settings that administrative users should be able to change through the
UI.