Refactor readCache into it's own class

I'm about to make it more complicated, it should be abstracted.

Also clear redundant fields like originalBases after they're processed to reduce memory usage.

Add simple assert mechanism to help catch logic errors.
Use JS strict mode for better error catching
Add missing readcache.js file, and explicitly clear cache on sequence change.

Forgot to add this in the previous refactoring commit.

We were also potentially hanging onto cache data on sequence change (which
would only be a problem if the position range happened to overlap).
Implement efficient yTrack management.

Since reads can now arrive in arbitrary orders, it's non-trivial to assign them
to tracks compactly.  The previous naive algorithm was O(n^2) in the number of
reads and at full read view was causing significant delays (sometimes several
seconds even on a fast desktop).

Fix this by maintaining a binary search tree for each track, so now updating
reads O(n log n) in the number of reads.

This adds a red black tree implementation from https://github.com/vadimg/js_bintrees
Eliminate one extra updateDisplay call

updateDisplay is still too expensive a lot of the time.
Revert accidental checkin changing appengine project name