Use a single InputStream to load images

requires using mark and reset instead which hasn't
been 100% reliable in the past and is difficult to
recover from when it fails. However, increasing
the mark length may make it reliable enough and
it allows us to avoid doing things like making
2 http calls to download each image.
More graceful error handling
Throw a particular exception if mark is invalid

Will make logging easier
StreamsOpener -> StreamOpener

Now returns a single InputStream instead of a pair
wrapped in an object
Prevent BitmapFactory from overriding mark size
Make DiskCache interface return one InputStream
Pass model to exception handler
Fix flickr api return url for incorrect image size

HashMap.keySet is not ordered :(
Remove path interface in ImageResizer

Also update/correct the comments
Fix mark position causing gcs

if mark position > bytes size, the input stream 
will eventually allocate a new buffer up to the 
mark position. This prevents those extra 
allocations.
Stop load in ImagePresenter if id or opener = null
Lazily create files from paths in FileOpener
Fix extra allocations when marklimit > buffer size

BufferedInputStream would double the buffer size
each time it read from the input stream if
mark limit > buffer size, including the first time
before any data is read. This change prevents the
buffer size from being increased until after at
least one buffer worth of data is read. In turn
this reduces gcs with a large mark limit relative
to the buffer size.
Add a default exception handler to log exceptions

previously they were caught silently