strings: add logging for untranslated source messages

This should probably be changed to be closer to the goal of being
like gettext but we can at least tell developers when we clobber the
string
User-visible warning when tile sources fail to load

This is currently using window.alert in lieu of something more sophisticated but it works for indicating 404s or invalid file
contents
Viewer: add a basic error message display system

This might be something we want to make configurable for users who want
to completely control how errors are displayed.

This also adds the first use of OpenSeadragon.makeCenteredNode currently
so we might want to clean up that code as well.
code style
code style
Basic demo: set HTML5 doctype

This keeps IE8 out of quirks mode, which breaks things like 
getWindowSize…
Viewer: refactor message code into showMessage/hideMessage methods

This avoids the need to deal with classes, and explicitly makes it
reusable for other needs
Refactor OpenSeadragon.makeCenteredNode

* Use CSS display tables for vertical centering (tested back to IE8)
* Use the DOM instead of string concatenation
* Remove redundant styles ($.makeNeutralElement sets the same values
  for margin, padding & border)
* Return the outer wrapper element to ease DOM addition & removal
Remove detritus left behind from error handler testing
Viewer.showMessage() hides any previous message
Viewer: make viewport messages private, repeatable

* Marked _showMessage/_hideMessage as private
* Fix DOM manipulation bug: call standard removeNode() method rather
  than proprietary WebKit .remove()
* Change messageDiv to be the outer wrapper to simplify removing the
  entire message container
Tests: getString with placeholder expansion
Viewport messages: add a class to the dialog for easy styling
Tests: add open failure tests, overhaul test framework

* Add tests for open failures
* Refactor tests to avoid tests depending on implied status from
  previous tests:
  1. The viewer is now created and destroyed for each
     test to avoid pollution and simplify error handling: nothing
     starts until you request it.
  2. Some tests like Basic: Homepage depended on the Zoom & Pan tests;
     now this is handled explicitly as part of the test setup
  3. All basic tests are now properly async tests (since they needed
     the viewer to load, they really were in the past except that
     they were relying on the viewer state left behind from previous
     tests)
* All tests now run inside the qunit-fixture to prevent masking
  failures. Util.resetDom() has been refactored to use the
  qunit-fixture and the teardown logic only used in the navigator
  tests has been moved into the navigator test teardown method
* Fixed undeclared mainViewerElement variable in optional path in
  the navigator tests
* JSHint cleanup
Tests: code cleanup
Tests: console log capture utility
Tests: check for AJAX error log message
Tests: verify invalid string log messages
Tests: more targeted log capture setup

@Ventero pointed out that functions also have a length property
Tests: IE8 support for log capture

No Array.indexOf. We are living like animals!