working on notepad editor

This is most (but not all) of the UI for another notepad codemirror
instance for players to save notes to. Saving to localstorage and
appearance tweaks still need to be done.
bringing canvas back in lvl16 (pointers)
killer lasers
Let dynamic objects have null behavior

A dynamic object can now have null behavior, instead of having to
specify a no-op function. This means that we can skip validating a
behavior function when it wouldn't do anything anyway. This
significantly speeds up level 16 (pointers).
sorta decent laser level now
Merge branch 'canvas'
Rest of styling for notepad

There's still a slight error with the placement of the save button but
apart from that it looks normal.
fixing saving editor state
merge
Refresh notepad CodeMirror object

When the notepad CodeMirror object becomes visible, call refresh() on it
to prevent graphical artifacts
Adds localStorage saving to notepad editor

Also adds notepadEditor as an object on Game
Game.notepadEditor => game.notepadEditor
styling notepad
fixes to pointers.jsx
fixing validateLevel
updating commandsIntroduced
updating music
validation fixes - closes #34
Merge branch 'master' into fonts