--Updated authenticator to handle logouts on Ajax requests more gracefully when the page being view is public but the user's session expired
--Added an Ajax template for rendering ajax requests that includes output of the user message if present
--Updated abstract plugin controller to dispatch to the index action when a permission check fails
--Updated authenticator to only check for session expiry when it's not a ping keepalive request
--Updated url function in page content manager defer to the id in params if not passed an id for returning the index url
--Got rid of setting to encode non-ascii characters in html purifier config since it didn't seem to do anything
--Updated abstract plugin and abstract plugin controller to better handle responses to failed permission checks, including taking Ajax requests into account
--Removed fields in user table create query that were only related to contact information since the new contact manager plugin will handle contacts stored in a separate table
--Revamped logic for redirection after logout such that:
  -- Redirect page only gets changed to the home page if the page logged out from is not public, otherwise stays as the current page
  -- If it's not an ajax request it always redirects so the browser doesn't keep the logout url in the address bar
  -- If it's an ajax request, it only redirects if the page is not public, otherwise it just clears the "action" parameter and continues
--Updated page content model to have an "updated" property
--Updated photo gallery validation js to send validator blank options so it doesn't bail
--Fixed the show album view file so it no longer tries to call the customized plugin made for another site
--Added an "is_permanent" property to contacts that can be used to prevent CMS deletion if you want a contact that can be edited but never deleted
--Added a mechanism for allowing multiple plugins to run on the same page where one takes a primary role (it's actions are run based on the query) and the rest take a secondary role, and can have a secondary action if desired
--Updated page content controller so it can take the appropriate role on pages where another plugin is primary
--Added the content manager JS file (how did I miss that one before?)
--Updated default htaccss with example rewrite rule for pages with one primary and one or more secondary plugins that may have conflicting actions, as well as a bunch of comments explaining the other special rules
--Updated all actions in all plugins that require ID's with the proper logic for responding to a missing ID both for regular and Ajax requests
--Fixed bug in mailer
--Moved standard email view file to correct location
--Added instructions for SMTP sending to docs in mailer
Tweak
--Removed log messages
--Small tweak
--Updated contact validation so only first and last name are absolutely required, and email address is only validation if provided
--Updated page content manager secondary action to only retrieve page content data when action is "index"
Config Tweak
--Updated config so the URL's just use the virtual host name (good in cases where a site is accessible via more than one domain, and with or without the www)
--Updated smtp setting logic in mailer plugin
--Added include of phpmailer to the top of mailer so it doesn't need to be installed as a separate plugin
--Logging tweaks
--Updated responses in send email function
--Shifted around the initialization order so the time zone gets set before session is started (maybe that will ensure that session timeout works properly on servers with a different time zone?)