Add experimental "unified extraction" for parsing scripts and styles.

Instead of having two methods for parsing scripts and styles, consolidate
them.  This also unifies the parse result object, which will allow
installation of scripts and styles from any fragment in the future.  For now,
guard the new method behind a `experimental-extract-unified` config.

Also, make the parsing logic much more robust, handling both HTML4 and HTML5
formats, as well as oddities like spaces and single quotes.  Add tests.

Progress on #24.
What is the rationale behind making this public? Will this be used outside of `spf.nav.response`?