remove all invocations of innerHTML Fixes #96

@benvanik, this is probably going to take some time to review.  I got a little overzealous and removed trailing whitespace, and touched a for loop, so if you want me to remove those from this patch, I'm down; I can do those in a follow up.  I also replaced the templating in the tabs with some helper functions; while not as clear as a giant string literal, it avoids innerHTML and provides helper functions for generating HTML fragments that were used more than once.

I tested this manually multiple times per file I changed.  I'd recommend testing at least on pages with blending, and non compilable shaders, but I wont provide my test cases so you might spot any changes I accidentally made.  That said, I'm pretty confident that I caught every case where you can't just swap innerHTML with textContent.