- Level Editor (continued...)
    - introduced EditModeControl component
    - implemented zoom in/out using +/- keys
- Level Editor (continued...)
    - refactored zoom code
- Level Editor (continued...)
    - limited zoom/scale to between 100% and 6.25%. In other words, can now zoom out a maximum of 4 times which is enough to see the entire map, and zoom in to 100%
    - can now pan the map using arrow keys
    - now showing Scale % in bottom-left corner
    - discovered that Crafty applies a scale transform to the stage when the viewport is scaled which effects DOM element position and size
    - for displaying the Scale % text I'm dividing x, y, and fontSize by zoomLevel to undo the effects of Crafty applying a scale transform to the stage when the viewport is scaled
- Level Editor (continued...)
    - moved most of the editor related code into Editor object
    - simplified Game.startLevel method
    - extracted LoadingText component
    - separated loading of level for playing and loading of level for editing
    - swapped behaviour of arrow keys while editing to pan in more sensible directions
- fixed bug in Crafty.isometric.place
- Level Editor (continued...)
    - can add and delete entities from the source map data referenced by TiledMapBuilder  (not hooked up to the GUI yet, although left click will delete some entities from the first row)
    - pressing 'S' writes the source map data referenced by TiledMapBuilder to the console in JSON format, which can be pasted into level.js

- TiledMapBuilder component changes:
    - new function addTileToLayer(row, column, tileName, layerName) which sets the tileId in the source layer data and also creates a new entity for the given row, column, tileName & layer
    - new function removeTileFromLayer(row, column, layerName) which clears the tileId in the source layer data and also destroys the entity for the given row, column, & layer
    - fixed potential bug: was using parseInt without specifying radix
- Level Editor (continued...)
    - now correctly converting mouse (x,y) to iso (row,column) so that left-clicking a tile will delete it