Image Widget: refactor to allow conditional loading of the styles

Use the new WP_Widget class
Move enqueue function inside the widget class
Wrap in a check to see if the widget is active
Yes. That seems like something that could be improved in core. I created a trac ticket for it:
- https://core.trac.wordpress.org/ticket/29155