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