- disable startup if `document.readyState` not available
- accept any boot-options even if they don't match the type-of the default
- resolveScript() supports one argument but was sometimes called with two
Remove `target()` frameset config option since it is no longer supported.
- <script> processing changes including <script for="frameset">
- fix bugs in `main` and `ht` processors
- bring back some of the panning code (but no state-handling)
All URLs in all documents must be resolved. This will be a perf issue on big documents.
framer.framesetOptions -> framer.options
framer.configFrameset() -> framer.config()

framer.frameOptions -> HFrameDefinition.options
Also implement:
	HFramesetDefinition#options
	HFrameDefinition#options
These are configurable from the frameset document via
	<script for="frameset"></script>
	<script for="frame"></script>
blocks.
Use DOM.insertNode() because it uses adoptNode if available.
Rely on Element#hasAttribute() rather than AttributeNode#specified.
This requires IE >= 8.

Assume `class` attributes can be get/set with el.getAttribute('class').
This also requires IE >= 8
Stop trying to work around invisible XMLHttpRequest on IE7,8.
Changes to fix IE9 support plus partial IE8 support.

hfTagName() can return xml-ish namespaced tags eg `hf:frame`.
On IE8, IE9 this uses element.scopeName.

Also add _.map() and _.filter() array utils.
1. The document loader MUST resolve ALL URLs.
This wasn't always necessary in HTMLDecor because document.URL would be
changed to match the URL of downloaded documents.
In HyperFrameset downloaded documents will frequently not match document.URL

2. Remove parser support for IE <= 7.
This cuts out the work-around for IE7 auto-resolving URL attributes.
IE6, IE7 would return a fully resolved URL for, say a.getAttribute('href'),
even if @href was a relative URL.
hasAttribute() feature check was wrong
Add an `options` argument to createDocument() and cloneDocument()
so they can be passed a prepare(doc) function
which typically implements the so-called html5shiv.

Loading the frameset document now passes a hfCustomElementsPrepare() functio
to the html-parser so IE8 can handle <hf-frame>, <hf-body>, etc
tagName() becomes getTagName(). Too many times I type something like:
	var tagName = tagName(el);
Add <hf:frame>, <hf:body>, etc to hfParserPrepare() used when loading the frameset document.
Oops. Missing `var `.
Cleanup JS and DOM utils:
- forSiblings(..., fn) becomes siblings(...) which returns a NodeList.
- uc(), lc() don't throw if passed null.
- STAGING_DOCUMENT_IS_INERT was sometimes detected as `true` on IE9. Fix this by trying a dynamic script insertion.
- importSingleNode() could only import to `document`.
- same for composeNode()
- all platforms are assumed to support querySelector*() so simplify $, $$, etc.
Implement CustomDOM.
Detect HyperFrameset element namespacing from frameset document:
- default is <hf-frame>, etc
- if <html xmlns:hf="HyperFrameset"> then <hf:frame>, etc
- if <html xmlns:foo="HyperFrameset"> then <foo:frame>, etc
Implement DOM.textContent()
Switch to xml-style namespacing <hf:frame>, etc
<script for="frameset"> must now be written <script for="hf:frameset">
(or replace `hf:` with whatever custom namespace is being used).