Use proper HTML5 semantic tags (main, section) && add err page

* style.css: Use em for disclaimer & copyright; this fixes barely
visible text in IE.

* layout.jade: Only set page title if passed site_company var is not
null.

* contact.jade: Use label for Contact Prefs text.
Preliminary server-side validation for contact page

...via express-validator package; said page now sends HTTP POST upon
submission.

* contact.jade: Use hidden labels for un-named fields (phone
extension, last name, etc.); for sake of HTML validation...

* contact.jade: Use HTML5 placeholder & required fields & remove JS
placeholder implementation; dealing with the default values on the
server-side prove more of a headache than it is worth!

* Introduce site_message.jade template; this can be used for display
of server-side messages.

* Introduce 'offline' mode so that we can continue working on the
site through net outages -- such as this very moment -_-.

* style.css: Relocate searchbar selector ID to google_cse.css;
this lets us optionally disable it when in 'offline' mode.

* Use HTML5 input types for all form elements.

* Remove users.js; this was a template (default generated) file.
Introduce experimental content container of 75% page width

* style.css: Re-indent file to two (2) space tab, from four (4) space
tab and put opening bracket on declaration line, try to ensure one
space in between every name & value pair.

* layout.jade: Remove 'Office Location' navi link && make contact link
go to root of its page (not its contact anchor).

* index.jade: Fix topic links.
* practice.jade: Fix topic links.
More site container clean up / fixes

* style.css: Split search input styling up into two; this helps keep
things clean by separating Google's requirements (branding) from
our code.

* style.css: Bit of styling (widths grouping) to the contact form
input elements.

* index.js: Lots of improvement to the validation logic for contact
form page.

* contact.jade: Introduce Jade 'mixins' for a few of the page's
form elements and lots other clean up for the page, such as:
a) state-aware form elements that won't reset their data when server-
side errors arise; b) Last Name is now its own text field; c) contact
preference checkboxes are now radio inputs; d) etc.

* Introduce 'contact_success' page -- little more than a stub for
time being.

* site_message.jade: Only show site (server-side) messages when
err.

* Introduce crossdomain.xml policy file defaults.
Introduce mobile (and small desktop window) stylesheet

* google_cse.css: Mark background attribute important; this prevents
it from being overwritten.

* Introduce common.css (HTML5 boilerplate code).

* Remove type='text/javascript' from script tags; the javascript
mime-type is assumed when using the script tag.
Temporarily disable off-site linking

* The offline environment variable breaks upon POST form
submissions (i.e.: contact page).
Fix site_env var (offline mode)

* I had forgotten to pass site_env to one of the routes (thus
creating the state loss problem) ;<o

* All routes are now passed ENV object (containing both app
and site environment).
Additional styling

* style.css: Use default font size of 1.25em.

* style.css: Remove width of 75% from navi_container.

* style.css: Introduce pg_header, pg_header_blue, note CSS
class selectors.

* style.css: Use slightly larger font size for #blue_button
and left margin of 20px for spacing in between buttons.

* style.css: Use smaller font size for footer's disclaimer text
and use UPPERCASE text transform; this lets us use the
site_company variable in the disclaimer text.

* mobile.css: Use default font size of 1.0em for body; the page
becomes blank (???) unless we do this with the new default font size
of 1.25em.

* contact.jade: Mark contact preferences a required field (asterisk).
* contact.jade: Make note of links that open in a new window.
Improve mobile & desktop layouts

* contact.jade, index.js: Disable confirmation e-mail input field &
validation logic.

* contact.jade, index.js: Remove phone extension input field &
validation logic.

* layout.jade: Move javascripts/helpers.js script declaration back up
to head element; this is done so we can access our helper methods early
on.

* layout.jade: Add livereload.js script for LiveReload functionality on
iOS devices & simulator.

* Fix footer layout.

* helpers.js: Add attribute_exists helper function.

* style.css: Introduce err class selector for use with contact page
validation errs.

* contact.jade: Use top-aligned labels; this removes the table layout
and lets us begin integration of validation err messages above each
form element (able to fit within both desktop & mobile layouts).

* style.css: Fix several layout issues with mobile layout (navigational
links now have more spacing, disclaimer margins have been added,
auto-sized textarea width and height, etc.).
Fix loading of scripts when not offline

* Oops! I had forgotten to uncomment these during commit #fe48f8c.
Use LiveReload feature only in app 'development' mode

```
NODE_ENV=development node app.js
```
Conslidate link anchor IDs onto header elements
Internal clean up

* style.css: Rename page_container to page.
* style.css: Rename navi_container to nav_container.
* style.css: Rename nav_down to nav.
* style.css: Rename header to site_header.
* style.css: Rename pg_header to heading && split pg_header_blue
into bold && sky_blue class selectors.

* layout.jade: Add header block for future page use.
* layout.jade: Rename navi_links var to nav_links.

* layout.jade: Do not use CSS styles on HTML5 semantic tags; this is to
ensure compatibility with browsers that do not recognize the tags (i.e.:
older versions of MS Internet Explorer).
Keep the site header (link) blue after visiting
Fix missing variables errs on error site page

* Relocate ENV var declaration from index.js to its own file at
./lib/env.js for global export via app.js.
Clean up on error site page; improve handling of err 500

* Show 404 widget helper only if status code is 404.
* Show appropriate status code & description in header
for err 500.
Fix bad hyper-links on error page (or any non-root path!)

* This was also the cause of the stylesheets not being applied when
at non-existent child paths -- i.e.: /contact/err.

* contact.jade: Use topics.href var for Contact & Location buttons.
Simplify routing & local site vars (use app.locals)

* env.js: Obsoleted and thus removed; variable declarations have been
relocated to app.js and are now app.locals settings; automatic global
access!
    * ENV['app'] has been removed since we can now access the variable
via locals.env.
    * ENV['site'] has been renamed to remote and is now of the boolean
type.

* index.js: site_company, email_addr && md vars have been relocated to
app.js and are now app.locals settings; automatic global access is
achieved like so.

* layout.jade: nav_links has been relocated to app.js as an app.locals
settings; automatic global access is achieved like so.
  The variable has also been transformed from a JSON array, object type
to a JSON object, object type; access via named string (i.e.:
locals.settings.nav_links['about'].href ).

* layout.jade: Introduce optional title block; the titles of every site
page (except for the index page) has been updated to use a custom page
title.
app.js: Pass handler err status code in production mode
Fix conditional checks of dev environment

* Oops! locals.env was intended to be locals.settings.env