Intercepting Texture Loading during imports + some code cleanup

This PR enables both #3412 and #3430 to be addressed as extensions to ThreeJS because this PR allows for image loading to be replaced within the standard JS loaders via replacing the imageLoader class.

The key idea is that loaders that will load textures use the member variable of the loader class called ```this.imageLoader``` instead of calling ```THREE.ImageUtils``` directly.

By default ```this.imageLoader``` is set to ```new THREE.DefaultImageLoader()``` which is a proxy for ```THREE.ImageUtils``` but users can change the class that is set to ```this.imageLoader``` to override the default behavior provided by ThreeJS.

I believe this is a minimal change.

I have also removed the need for MTL to resize textures on load to powers of 2.  This should either be in all loaders or none of them.  It isn't a unique requirement for MTLs.  I've also moved the utility functions that were used for this to THREE.Math so they can be reused by others.