Editor API redesign

This PR contains some big changes in the editor design and minor changes to three.js core.
The documentation is ready but I didn't have time to put it in the repo yet. You can see it [here](https://docs.google.com/document/d/1qzGS0tAHtR6vR27YTgJoq-C8SjkCEjOQaFBLYuobEPI/edit)

The main idea was to create a simple and coherent API decoupled from the GUI.
There are a may useful methods defined in the `Editor` class and they can be used straight from the console.

`.setScene(scene)
.createObject(type, parameters, material)
.createMaterial( type, parameters )
.createTexture( image, parameters )
.addObject( object, parent )
.addHelper( object )
.deleteHelper( object )
.addGeometry( geometry )
.addMaterial( material )
.addTexture( texture )
.select( list, additive )
.selectByUuid( uuid, additive )
.selectByName( name, type,  additive )
.selectAll( type, additive )
.deselect( list )
.deselectByName( name, type )
.deselectAll( type )
.pickWalk( direction )
.list( type )
.listSelected( type )
.listByName( name, type )
.delete( list )
.deleteByName( name, type )
.deleteAll( type )
.deleteUnused( type )
.clone( list, recursive, deep )
.parent( list, parent, locked )
.unparent( list, locked )
.group( list )
.updateMaterials( list )
.setFog( parameters )`

Fixes issue #3481

In three.js core the changes are:
* Added `this.uuid = '';` to most object classes
* `Object3D.clone()` now has an option to clone non-recursively (ignores children)
* `ObjectExporter`, `MaterialExporter` and `ObjectLoader` now take `uuid` attribute if defined