Style HTML layouts for emails

This is the start of work on #132.  Create the scaffolding
and email html template layout.  From here, we can start
working on each of the individual emails.

Added a new config variable, systemName, which will be displayed
in the emails (eg CrowdWork or Midas or FairTrade)
Set HTML title to systemName from local.js

Use the systemName to set the title of the HTML doc.
Useful for branding.
Wordsmithing notification preferences
Reliably load version info

Now that the view is loaded by MainController, can load
version information reliably the first time, and then
cache it for future iterations.
Set more logical cache options

For files, remove no-cache directives
Instead, require revalidation every 5 minutes.  This should
be fine for things like profile photos, where it is ok if they're
not up to date within 5 minutes.

For the main view, require revalidation every hour.  This file
will rarely update, and so it is okay if it takes an hour to propogate.
In reality, this could probably be set to a day.  But the file is
so small, it doesn't matter.
Version production assets

Production assets are currently called:
- midas.js
- midas.css / midas.min.css

When various webservers set their caching to be very long periods
of time, new releases of midas are not loaded from the server.

With this change, the production assets are now called:
- midas-{ version }.js
- midas-{ version }.min.css
eg:
- midas-0.0.11.js
- midas-0.0.11.min.css

This way, when a new version is released, the filenames will
be udpated.  When the browser hits the page, it will see that
it doesn't have these files in cache, and will loads them.

This is made possible by e7db69e28a97c9aaf6216fa12a8092c226a56efb
which forces the main view to be reloaded hourly.
Move email lookup to util function

Since multiple email addresses can be registered, use a
utility function to look up the "primary" email address.
If no primary email address is set, use the last email address
created.

Fix the tab-space formatting in the preflight files
(it was mixing tabs and spaces, ugh)
Clean up cruft; move common fn to utils

Many of the audience finders were not implemented
and had empty execute functions.  This was really
misleading.  Remove these files so they don't confuse
others since they don't serve any purpose.

Move a common function that was used to look up all
users with given ids into a utility module.
Have the audience finders use this utility function.
Clean util function

Add documentation, pass err correctly to the callback,
and make it part of the module instead of a standalone
function.
Cleanup notification passthrough, formatting

When you call notify, it returns immediately.  It had
a flag for this, but the flag was already true.  Remove the flag.

Fix the formatting for functions and if statements to match
the Google javascript rules.
Pass object metadata to email templates

Email templates would only collect certain specified
information, such as `parentComment`.  But for
flexibility in the email notifications, you want
a lot more info without making multiple database
calls.

This commit adds a `fields.metadata` to the fields
that are passed between parts of the notification
system.

Tested with the projectCommentParentReply which
now can greet the user, tell them about the
comment, and give them a call to action.

Subjects are now underscore templates so that
the can dynamically be set in the config file.
Updated emailSettings.ex.js to show how you
can update the subject.

Adds a `cleanComment` function to the comments
utils, so that HTML content of comments (such as
references to users, links, etc) doesn't get
sent through in emails.

The validation has been removed; it was a bunch of
code that doesn't actually do anything.  It was
causing issues and so needed to be removed.

This is an intermediate commit to fix up
the notification architecture. Partial for #132
Clean up template to match HTML

Now the HTML and Text is what we'd like them to say for
this one template; needs to be applied to the other
email templates.
Correctly spell synthesize

Yep, it is spelled wrong.
Minor grammar changes
Simply code by using findOneById

Makes things a lot cleaner and simpler.
Remove all synthesizeAndValidateFields

This wasn't doing anything and making the code impossibly
difficult to read.  Remove it.
Remove duplicate notification settings

These were screwing things up, get rid of them.
Remove hardcoded paths

Use the preflight settings passed in by the notification
manager.  This allows this preparation to be reused.
Consolidate project reply notifications

There was no need for the same code to be implemented almost
exactly the same in both prepareProjectCommentReplyOwnerEmail
and prepareProjectCommentReplyParentEmail.  Combined those
into a single preparation file and updated the settings to
use this strategy.

Update the HTML/Text templates for project comment replies
to match the content that we want.  Update the subject lines
to be underscore templates in the config.
Make "full" width 96%

So that the email renders correctly across readers, use 96%
width