add platform-independant interface for loading Image objects from streams. add SDL backend support

SDL2# does not include anything suitable for using Streams with, so we
just use System.Drawing instead for now