Merge cbrightsci fork into main project.

You may have to run everything through a tabs-to-spaces program. But don't worry about that now, just fix files as you enter them next time. Try to make separate commits for "spacing-only" fixes, though, so they're distinct from real functionality changes.