Compatible with new AWS restriction that requires subdomain for S3 links
Fixed crash on null/empty string
Added DictionaryExtensions class

Contains Dictionary extension method SafeLookup which provides an option of
specifying what is returned when a lookup fails, like TryGetValue but with
an explicit alternative (vs TValue default).