Output the name of the test when starting a suite

This makes it possible to identify which test suite failed
if one suite in a series fails due to an exception.
Add siteinfo/ module for fetching hi-res icons for websites/

siteinfo/ contains code to fetch icons for URLs from:
 - Common icon paths (favicon.ico, apple-touch-icon)
 - App, social media, schema.org and other resources linked from
   a site's main page

Images in ICO, PNG, JPEG and BMP format are supported.

 - ico.ts implements a .ico format handler which can parse .ico files
   containing data in the most common bmp format and extract the individual
   icons in .bmp format.

 - image.ts implements image size metadata extraction for BMP, JPEG and
   PNG files

 - service.ts implements a service which will query the standard icon
   paths ('favicon.ico', 'apple-touch-icon.png') for a site and also
   fetch the HTML content and extract site links from <link> and
   <meta> tags.

Images from external domains are fetched via a UrlFetcher interface,
which can either be a front-end to a web service in the case of a
web-only front-end where cross-origin requests are not allowed,
or priviledged APIs in the case of a browser extension or native app.
Add API for extension to fetch URLs from other origins

This provides a way for the item icon provider to fetch
favicons and other icons directly from the source
page via browser extensions.
Add webui/item_icons module to fetch site icons and convert into blob URLs for use in web UI front-end

item_icons.ItemIconProvider can be queried by UI components to initiate
a lookup of site icons for a given URL. When icons are retrieved it
selects one closest to the required size and produces a blob
URL that can be set on an <img> element.
Make it possible to differentiate between unsupported image types and decoding errors

image.getInfo() will return null for unsupported image types and throw
a DecodeError exception if the image type is recognized but
the image could not be decoded.

Use this in SiteInfoService to only log an error if a recognized image
type could not be decoded.
Add IndexedDB-based cache for site icons
Fix compatibility with current version of TypeScript/1.1 from Github

 - The Blob() ctor is missing parameters
 - The IDBKeyRange var is now present
Fix error when cache lookup fails

When a cache lookup finds no matching key, Cache.query() resolves
the promise with undefined rather than rejecting the promise -
which only happens if the lookup operation fails.

Also add a placeholder icon for a site for which no suitable icon
could be found.
Integrate pretty item icons into the overview and details list

When an item is scrolled into view, initiate a lookup for
icons for the site and update the item once the icon
is fetched.

The icon is cached locally in an IndexedDB-based database
once the fetch is complete.
Center icons in outline rather than stretching to fit

Small 16x16 favicons look awful when stretched to fit
the 48x48 icon container. Center the icons in the icon
outline instead.
Add FIXME re. using the same IndexedDB database across different Firefox releases
Wrap IndexedDB open errors so that we get a more useful message from later operations on the DB

When item_icons.Cache operations try to perform operations on the DB
which failed to open, this makes it clear that the error was the DB
failing to open rather than the operation (getting/setting/clearing
keys) itself which failed.