Moved animate function to boids.html

The animate function now sets up a "world" data structure (note that I'm
conspicuously not using the term "object") to pass to the animateBoids
function. Most functions now take the "world" data to operate on so that
movement functions in the movement pipeline (and, in fact, most
functions) can use the same interface.

Added a "Log?" checkbox to turn off logging: innerHTML changes were
taking a TON of CPU.

Log() will be commented on in a later commit.

This is the first of (I suspect) a bunch of commits as I've done a TON
of work, but wanted to give some good commit comments when I could give
them some thought.
Tons of debugging changes ...

In order to get flocking to work (albeit poorly) I had to do a ton of
changes.

I've moved the "animate" function to boids.html where it now sets up a
common interface as the "world" data structure. (see earlier commit)

Functions will now "change the world" using the changeWorldBoids
function to update between three fields in the world associative array:
boid, boids and movedBoids.

"boid" is the current boid from anyone's perspective;
"boids" are the boids that have not been operated on;
"movedBoids" are boids that have been operated on.

Typically we grab the next boid in boids, set "boid" to it, operate on
boid, then when we're done we transfer it to movedBoids (possibly with
shiftWorld).

combinePoints now returns the boid's location if no changes are made
(e.g. because no boids are near)

I've added a bunch of debuging "toString" functions (and tests) to make
logging and debugging MUCH easier.
Use newBoid, newWorld, point functions

Also using a new pointsEqual function.

Added a test for the testBoidDistanceToString debugging function; I'm
not super strict with tests for debugging functions but I didn't want to
mess around tinkering with these.
Tests for boids.js (was sorely lacking)

Also made use of various helper functions and the new "world" data
structure.
Add logging flag

Logging takes a ton of CPU; something to do with innerHTML but I didn't
look close. I don't really care either: if it becomes an issue where I
need it on for large numbers of boids I'll fix it. Until then I'll just
turn it off. I figured this out by using the Chrome JavaScript CPU usage
profiler. Without the logging the CPU is barely used at all.
Display name of test in results

Displays the name of the test both when there is an error and when there
is a normal failure. (i.e. the expected value wasn't returned)
Switch to "world" data structure, use point()

As mentioned in previous commits I've switched to a universal "world"
data structure (NOT an object) so that all functions can have a standard
interface to the world (canvas, boids, movement pipeline, etc.)

Also using the point() function to generate points.

Note that I'm using associative arrays purely as data structures with
convenient field accessors. I'm avoiding state wherever possible.
Fix flock logic ... somehow

I don't know where exactly I ended up fixing the flock logic (and I'm
using "fixed" loosely) but I added a bunch of tests, swapped over to
using the universal "world" data structure and added a boatload of
convenience functions for debugging, logging, constructing, etc.

Flocking now works after a fashion, but crashes after a while. "After a
fashion" is a huge victory at this point.