Improve image handling:
- load image using promises
- insure fadein starts only after image has loaded
- same for afterOpen callback
- insure that image change happens after end of fadeOut (gallery)
- afterImage will happen only after image has fade out and next image is loaded