Convert to shifting instrument/track with camera and light attached

Targets are now static in space, and the perspective shifts, pushing
the instrument and track through them.  Time is consequently tied to
the instrument's z-axis position, which should simplify development
down the line, as compared to coordinating target animations and their
listening timing.

Also cleaned up some inconsistencies in the view interfaces.  Views
have a threeNode property, initialized when the object is created, that
may be added as needed to other nodes or the world.

This should probably be refactored out in the future into a ThreeView
base class or something.
Add basic timeline control and Target hit detection
Note to self
Add World render hook to heatmaps, remove explicit call in main render loop.
Fix targets spawning with flipped colors
Fix coordinates for scale being flipped

Coordinates were using visual string indices for a flipped instrument,
instead of the correct coordinates with respect to the instrument's
string indices.
Awful C&P fix for falsy ShapeFactory arguments setting to defaults
Add a visual stem to frequency targets, and visual indication of targets having been hit

The stem improves on the ability to read what frets targets are on, and
help with reading their timing.
Tighten tolerance on spawned frequency targets

From one second to 0.25 seconds.
Add a bunch of pitch detection utilities, move audio input setup into main.js