Made Image class way more modular and object oriented

Could not test it really yet because unit tests are really almost impossible without proper dependency injection...
I think `rawurldecode` has to be called before the `is_file` check from line 141, as it was before.