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